EF Code First Fluent API指定外键属性

Ric*_*son 43 entity-framework ef-code-first

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

public class AgentBalance
{
    ...

    public int AgentId { get; set; }

    public virtual Agent Agent { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

按惯例,AgentId被检测为代理关系的FK,但我想在Mapping类中将其显式化,以便对未来的更改更安全.如果Agent有一个Balances集合,那么我知道如何做到这一点,例如:

HasRequired(t => t.Agent).WithMany(a => a.Balances).HasForeignKey(t => t.AgentId);
Run Code Online (Sandbox Code Playgroud)

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

SOf*_*tic 65

I believe you should be able to do this:

HasRequired(t => t.Agent).WithMany().HasForeignKey(t => t.AgentId)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢 - 我错过了WithMany()超载!不过,似乎是一种奇怪的语法.我不明白为什么他们不能让你写下像:HasRequired(t => t.Agent).HasForeignKey(t => t.AgentId) (9认同)
  • 这对我不起作用.除了我已明确配置为外键列的AgentId之外,EF还会创建一个新的Agent_Id列.你知道为什么会这样吗? (2认同)