Entity Framework Core Tutorial 身份插入
介紹
當你有一個主鍵字段,如Id或CustomerId,並且IDENTITY已打開時,它可以很好地在Entity Framework中插入數據,但在某些情況下,您可能需要將顯式值插入SQL Server IDENTITY列。為此,您需要在手動調用SaveChanges()之前啟用IDENTITY_INSERT。
假設您想創建一個具有顯式CusomterId值的新客戶。
var customer = new Customer { CustomerId = 100, FirstName = "Elizabeth", LastName = "Lincoln", Address = "23 Tsawassen Blvd." };
但是您無法直接插入具有顯式CustomerId值的客戶,並且在調用SaveChanges()
之前需要打開IDENTITY_INSERT
。
using (var context = new MyContext()) { var customer = new Customer { CustomerId = 100, FirstName = "Elizabeth", LastName = "Lincoln", Address = "23 Tsawassen Blvd." }; context.Customers.Add(customer); context.Database.OpenConnection(); try { context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.Customers ON"); context.SaveChanges(); context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.Customers OFF"); } finally { context.Database.CloseConnection(); } string breakS = ""; }
現在顯式的CustomerId將保存在數據庫中,因為在調用SaveChanges()
之前,我們已經打開了IDENTITY_INSERT
,然後將其關閉。