簡體   English   中英

EF Code First Fluent API指定外鍵屬性

[英]EF Code First Fluent API specifying the Foreign Key property

我有一個AgentBalance類與Agent關聯,因此:

public class AgentBalance
{
    ...

    public int AgentId { get; set; }

    public virtual Agent Agent { get; set; }

}

按慣例,AgentId被檢測為代理關系的FK,但我想在Mapping類中將其顯式化,以便對未來的更改更安全。 如果Agent有一個Balances集合,那么我知道如何做到這一點,例如:

HasRequired(t => t.Agent).WithMany(a => a.Balances).HasForeignKey(t => t.AgentId);

但是,代理沒有余額集合 - 我不希望該關聯可以反向導航。 但是如果沒有映射中的.WithMany,我就無法選擇指定.HasForeignKey。 還有另外一種方法嗎? (注意我知道我也可以使用屬性來做這個,但我想使用流暢的API映射)。

我相信你應該能夠這樣做:

HasRequired(t => t.Agent).WithMany().HasForeignKey(t => t.AgentId)

我更喜歡使用Data Annotations來完成這些任務,而不是Fluent API。 它簡單易懂,易於理解。 EF必須自動檢測以“Id”結尾的屬性,但為了安全起見,您可以明確指定它們:

using System.ComponentModel.DataAnnotations.Schema;
...
public int AgentId { get; set; }

[ForeignKey("AgentId")]
public virtual Agent Agent { get; set; }

如果您的FK道具未以“Id”結尾,則需要明確指定它們,例如:

public int AgentCode { get; set; }

[ForeignKey("AgentCode")] // now this is needed if you'd like to have FK created
public virtual Agent Agent { get; set; }

您可以在此處找到更多詳細信息: https//msdn.microsoft.com/en-us/data/jj591583.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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