流畅的API的一个卖点(我知道一个小卖点)是流畅的调用链可以类似于自然语言,乍一看这看起来都很棒,但Code First流畅的映射就是这种情况API,这些调用与英语的距离太远了,我见过的所有文档总是在一个描述中描述整个调用链。
我正在寻找封面材料,例如像这样流畅的呼叫链:
modelBuilder.Entity<Status>().HasRequired(s => s.Login).WithMany();
“状态需要登录,此登录可以有许多状态。”
如果我对阅读该链条的方式甚至是正确的,但我确信读者知道我的意思。
答案 0 :(得分:2)
让我们更加复杂地描述映射意味着什么。假设您有这两个实体:
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
的这个通用参数会自动推断出来。