在插入/添加期間,我可以在一個寫入/保存程序中創建一個與新賦值的主鍵相等的不同列,該主鍵是身份自動生成的值嗎?我知道我可以事后抓住并改變,但這是我試圖避免的額外資料庫命中。
public class myDataTableRec
{
public int Id { get; set; } //This is an Identity Primary Key
public string Name { get; set; }
public int PostId { get; set; } //Want this the same as Id when it gets generated
}
myrec = new myDataTableRec;
db.myDataTable.Add(myrec);
db.SaveChanges();
uj5u.com熱心網友回復:
您必須將 的屬性設定StoreGeneratedPattern為身份,然后嘗試您將能夠實作這一目標
myrec = new myDataTableRec;
db.myDataTable.Add(myrec);
db.SaveChanges();
var id = myrec.Id;
uj5u.com熱心網友回復:
來自https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.dbcontext.add?view=efcore-5.0
“添加(TEntity)
開始跟蹤給定物體,以及任何其他尚未被跟蹤的可訪問物體,處于已添加狀態,以便在呼叫 SaveChanges() 時將它們插入到資料庫中。
使用 State 僅設定單個物體的狀態。”
由于它跟蹤物體,您可以執行以下操作:
myrec=new myDataTableRec;
db.myDataTable.Add(myrec);
myrec.PostId = myrec.Id
db.SaveChanges();
編輯:如果它在保存后創建 Id,則您始終可以創建自己的 Id (Guid.NewGuid()) 并且不要讓 EF 生成它。
uj5u.com熱心網友回復:
將 Key 屬性添加到 myDataTableRec 類屬性。像這樣:
public class myDataTableRec
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
[Key]
public int PostId { get; set; }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385968.html
上一篇:只有值發生變化時可以使用ReadOnlyDictionary嗎?
下一篇:如何使用來自任意型別類的變數?
