如何在使用數據註釋的EF Core遷移中將外鍵設為NOT NULL?

ef-migrations entity-framework-core

我正在使用ASP.NET Core和EF Core,我有以下兩個父類和子類。每張禮品卡都有很多交易:

public class GiftCard
{
    public int Id { get; set; }
    public string BarCode { get; set; }
    public DateTime PurchaseDate { get; set; }
    public string Comments { get; set; }
    public byte[] Timestamp { get; set; }
    public List<Transaction.Transaction> Transactions { get; set; }
}

public class Transaction
{
    public int Id { get; set; }
    public DateTime TransactionDate { get; set; }
    public decimal TransactionAmount { get; set; }
    public TransactionType TransactionType { get; set; }
    public byte[] Timestamp { get; set; }
    public GiftCard.GiftCard GiftCard { get; set; }
}    

基於我讀到的內容,這是通過在父級和子級中的引用導航上具有導航屬性來實現它的方法。當我添加遷移並使用命令行更新數據庫時,除了Transactions表中的GiftCardId外鍵可以為空之外,數據庫中的一切似乎都可以。我想確保這不是NULL。我錯過了Data Annotation屬性嗎?

一般承認的答案

將以下屬性放在您的Transaction實體上,它應該被解析。

public int GiftCardId { get; set; }

你的定義發生了什麼,正在創建一個shadow屬性,而EF的Change Tracker正在維護這些關係。

看到這裡



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow