【问题标题】:English explanations of Code First Fluent mappings pleaseCode First Fluent 映射的英文解释请
【发布时间】:2012-04-22 10:53:54
【问题描述】:
流式 API 的一个卖点(我知道一个小卖点)是流式调用链可以类似于自然语言,乍一看这一切看起来都很棒,但就像 Code First 流式映射的情况一样API,调用与英语相去甚远,我见过的所有文档总是在一个描述中描述整个调用链。
我正在寻找封面的材料,例如像这样的流畅调用链:
modelBuilder.Entity<Status>().HasRequired(s => s.Login).WithMany();
“一个状态需要一个登录名,这个登录名可以有多个状态。”
如果我在阅读该链的方式上是正确的,但我相信读者知道我的意思。
【问题讨论】:
标签:
.net
entity-framework
entity-framework-4
ef-code-first
【解决方案1】:
让我们稍微复杂一点,以充分描述映射的含义。假设您有这两个实体:
public class Status
{
public int Id { get; set; }
...
public virtual LoginInfo Login { get; set; }
}
public class LoginInfo
{
public int Id { get; set; }
...
// No navigation property to Status
}
现在你编写映射语句:
modelBuilder.Entity<Status>().HasRequired(s => s.Login).WithMany();
这句话的翻译应该是这样的(我相信母语人士可以形成更好的解释):
实体 Status 已映射所需的导航属性 Login 以访问相关的 LoginInfo 实体实例,其中该实例可以与许多状态相关,但它不会公开映射的导航属性来访问它们。
原始流畅的描述隐藏了关于LoginInfo的信息,因为HasRequired的这个通用参数是自动推断出来的。