为啥我的实体框架应用程序正常工作?
Posted
技术标签:
【中文标题】为啥我的实体框架应用程序正常工作?【英文标题】:Why is my Entity Framework application working?为什么我的实体框架应用程序正常工作? 【发布时间】:2011-10-31 01:48:23 【问题描述】:为了快速入门,模型如下:
public class foo
public int ID;
[Required]
public bla bla;
public class bla
public int ID;
public string test
基本上,这可以正常工作并且符合预期。
我的应用程序是一个普通的应用程序 - 我有一个 bla
的列表,每个都与一个 foo
相关联。
我有一个包含 Foo 列表的页面,有人可以单击一个页面,然后显示与该 Foo 关联的每个 bla。
代码具有传递给它的 Foo 的 ID,并且是:
bla bla = db.bla.Where(x=>x.id == id);
db.foo.Where(x=>x.bla == bla);
但是,我真的很想尝试使用 FluentAPI,并且我使用了以下内容:
modelBuilder.Entity<foo>()
.HasRequired(x => x.bla)
.WithOptional()
.WillCascadeOnDelete();
我通过查看数据库架构猜测我无意中创建了一对一关系,因为bla_id
列不存在。但是,我真正不明白的是我的应用程序如何在不修改的情况下继续工作? (不管怎样,我每个 bla 最多只能创建一个 foo)。
我真的不明白为什么WithOptional
会暗示一对一 - 这真的让我很紧张,因为不同选项(和 MSDN)的工具提示暗示着非常相似,如果选项之间的信息不同的话。这让学习变得非常困难。
另外,我认为 FluentAPI 完全覆盖模型注释是否正确?
最后,我在这里有点挣扎。有人知道 FluentAPI 的备忘单/列表吗?
【问题讨论】:
【参考方案1】:看看Configuring Relationships with Fluent API (Code First)。
向下滚动到配置一对零或一关系。
【讨论】:
以上是关于为啥我的实体框架应用程序正常工作?的主要内容,如果未能解决你的问题,请参考以下文章