为啥我的实体框架应用程序正常工作?

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)。

向下滚动到配置一对零或一关系

【讨论】:

以上是关于为啥我的实体框架应用程序正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

在我的wcf服务中用实体框架实现的WCF服务的性能?

具有实体框架的CRUD WEB API

在导航属性实体框架上正确使用接口

为啥我的 C 程序不能正常工作?

我的 quickSort() 程序不能正常工作,为啥? [关闭]

为啥我的 pygame 应用程序循环不能正常工作? [复制]