簡體   English   中英

如何處理實體框架中的主鍵5代碼優先

[英]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.

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