我有一个AgentBalance类,它与Agent有关联,因此:
public class AgentBalance
{
...
public int AgentId { get; set; }
public virtual Agent Agent { get; set; }
}
按惯例,AgentId被检测为代理关系的FK,但我希望在Mapping类中将其显式化,以便对将来的更改更安全。如果Agent有一系列余额,那么我知道如何做到这一点,例如:
HasRequired(t => t.Agent).WithMany(a => a.Balances).HasForeignKey(t => t.AgentId);
但是,代理商没有拥有余额集合 - 我不希望该关联可以反向导航。但是如果没有映射中的.WithMany,我就无法选择指定.HasForeignKey。还有另外一种方法吗? (N.B.我知道我也可以使用属性来做这个,但我想使用流畅的API映射)。
答案 0 :(得分:62)
我相信你应该能够做到这一点:
HasRequired(t => t.Agent).WithMany().HasForeignKey(t => t.AgentId)
答案 1 :(得分:2)
我更喜欢使用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