簡體   English   中英

Linq-to-sql外鍵ID不會自動添加

[英]Linq-to-sql foreign key id not added automatically

我有一個基於服務的文件數據庫。 有兩個表:Client和Visitation。 表之間存在一對多關系:一個客戶->許多訪問

表:

CREATE TABLE [dbo].[Clients] (
    [Id]          INT            IDENTITY (1, 1) NOT NULL,
    [Surname]     NVARCHAR (MAX) NULL,
    [Firstname]   NVARCHAR (MAX) NULL,
    [Birthday]    DATETIME       NULL,
    [Email]       NVARCHAR (MAX) NULL,
    [PhoneNumber] NVARCHAR (MAX) NULL,
    [Job]         NVARCHAR (MAX) NULL,
    [Note]        NVARCHAR (MAX) NULL,
    [Birthplace]  NVARCHAR (MAX) NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

CREATE TABLE [dbo].[Visitationdb] (
    [Id]        INT      IDENTITY (1, 1) NOT NULL,
    [StartTime] DATETIME NULL,
    [ClientId]  INT      NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [FK_Visitationdb_ToClients] FOREIGN KEY ([ClientId]) REFERENCES [dbo].[Clients] ([Id])
);

我創建了必需的ClientId列和外鍵約束。

LINQ到SQL

在項目中添加了新的Linq to SQL類(dbml)文件,並在設計器的幫助下創建了表的類。 (在這里,我必須將一對一關系修改為一對多)

問題

DataContext MdpContext = new DataContext(Settings.Default.mdcdbConnectionString); //creating the context
var c = new Client //creating new client
    {
        Birthday = patientold.Birthday,
        Email = patientold.Email,
        Firstname = patientold.FirstName,
        Job = patientold.Job,
        PhoneNumber = patientold.PhoneNumber,
        Surname = patientold.SurName,
    };
clients.InsertOnSubmit(c);
MdpContext.SubmitChanges(); //now I will have my auto generated client id set by database       
var visit = new Visitationdb {StartTime = visitold.StartTime};
c.Visitationdb.Add(visit);
MdpContext.SubmitChanges();

異常拋出:無法將值NULL插入表'MDCDB.MDF.dbo.Visitationdb'的'ClientId'列中; 列不允許為空。 INSERT失敗。

問題

為什么L2S不處理在c.Visitationdb.Add(visit)行自動插入ClientId的問題? 為什么每次我需要一個自動生成的ID時都必須提交SubmitChanges(),在添加所有客戶端和訪問后,是否有解決方案來處理框架中的所有新行ID和外鍵?

感謝您閱讀我的問題。 編碼好!

我發現了問題!

我認為L2S處理關系(關聯)並在拖放到設計器中后正確生成實體。

問題在L2S中,在關聯中設置了Visitaitondb.Id,而不是外鍵(ClientId)。

解決方案在設計器中單擊“關系(關聯)”,然后在“屬性/參與屬性”處設置正確的數據庫字段。 就我而言:Client.Id-> Visitationdb.ClientId

不需要每次需要生成ID或添加新實體時都調用SubmitChanges。 最后,所有ID將由L2S正確設置!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM