[英]How to Handle Primary Key in Entity Framework 5 Code First
在我的EF5代碼優先模型中,如果數據庫設置主鍵,則創建新記錄會更好。 我使用Guid作為主鍵,如果設置了DatabaseGeneratedOption.Identity
,SQL Server將始終創建uniqueidentifier
。
但是,當我嘗試初始化數據庫時,這會導致問題。 如果我在種子方法中設置Guid,SQL Server會覆蓋它。 如果我沒有設置Guid,我每次都會得到一條新記錄。 使用預先設置的Guids為數據庫設定種子並為我的正常操作設置DatabaseGeneratedOption.Identity
的建議解決方案是什么?
示例類模型:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public RecordName { get; set; }
public DateTime? Created { get; set; }
public DateTime? Updated { get; set; }
示例種子方法:
var record = new Record()
{
Id = new Guid("3B80725E-9550-4933-807F-C2FAA0942225"),
RecordName = "New Record",
Created = DateTime.UtcNow,
Updated = DateTime.UtcNow,
};
context.Record.AddOrUpdate(record);
context.SaveChanges();
AddOrUpdate具有允許您指定密鑰的重載
來自MSDN
所以你需要為方法提供自然鍵:
context.Record.AddOrUpdate(c => c.RecordName, new Record()
{
RecordName = "New Record",
Created = DateTime.UtcNow,
Updated = DateTime.UtcNow,
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.