44

我有一个与 Agent 关联的类 AgentBalance,因此:

public class AgentBalance
{
    ...

    public int AgentId { get; set; }

    public virtual Agent Agent { get; set; }

}

按照惯例,AgentId 被检测为代理关系的 FK,但我想在 Mapping 类中使其明确,以更安全地应对未来的变化。如果代理有一组余额,那么我知道如何执行此操作,例如:

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

但是,代理没有余额集合-我不希望该关联可以反向导航。但是如果没有映射中的 .WithMany,我将无法选择指定 .HasForeignKey。还有其他方法吗?(注意我知道我也可以使用属性来做到这一点,但我想使用流畅的 API 映射)。

4

2 回答 2

68

我相信你应该能够做到这一点:

HasRequired(t => t.Agent).WithMany().HasForeignKey(t => t.AgentId)
于 2013-10-14T12:06:41.863 回答
1

我更喜欢对这些任务使用数据注释,而不是 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

于 2015-03-10T21:43:07.220 回答