0

大约两年前,我确实在 ADO.NET Entity Framework v2 上工作过。我有淡淡的记忆。

顺便说一句,我碰巧在一个非常安全(为了委婉说法)的环境中工作,其中许多链接被阻止并且无能为力。它确实妨碍了学习和工作,不止一点。

因此,我必须依靠这个论坛来解决一些我必须重新开始的基本问题。这一次,我正在研究 Entity Framework 4。这是我的问题。

所有这些问题都与EDM 生成的实体有关,即与 Code First模型无关。

1)我的理解正确吗?我可以在 EDM 设计器生成的模型中重命名任何列名,并且没有任何中断。

2) 外键在生成的实体类中表示为导航属性。维护外键关系不需要特殊考虑。我记得在 EF 版本 1 中,您只有 ID 属性,并且在版本 2 中引入了导航 IQueryable/IEnumerable/EntityCollection/RelatedEnd 属性。我只需要知道我是否需要做任何事情来保留/维护外键关系和引用数据的完整性。我想我不需要。确认会很好。

3) 执行存储过程的所有可能方式是什么?我记得——在 Context.Database 对象上使用 ExecuteSQL 或其他东西的一种方法,另一种使用 EntityClient API 的方法,第三种是在 EDM 设计器的映射窗口中的 InsertCommand、SelectCommand 等事物中指定存储过程名称。它是否正确?

4) 你如何在实体的映射窗口中使用那些 SelectCommand 东西?您是否只提供存储过程或用户定义的 SQL 函数的名称?

5) 如何从表的子集创建实体?我是否只是从表中创建一个实体,然后从设计器中删除我不需要的列?如果需要的值(SQL 中为非空)不在我选择的子集中,会发生什么情况?

6) 如何从两个或多个表的查询或连接中创建表。

4

1 回答 1

1

1)您可以在设计器中重命名列,并且不会中断(如果名称有效)

2) 导航属性指向相关实体。在 EF4 中添加了外键。外键属性基本上暴露了数据库处理关系的方式。但是,它们很有帮助,因为您不必为了更改关系而加载相关实体 - 您只需将键值更改为另一个实体的 id 并保存您的更改

3) 是的。您可以直接执行该过程 - 这适用于与 CUD(创建/更新/删除)操作无关的存储过程。您可以将 CUD 操作映射到存储过程,而不是让 EF 执行它为您的 CUD 操作提出的 SQL 语句。

4)我认为这有点超出范围 - 您可能可以找到很多带有图片的博客如何做到这一点。任何关于 EF 的像样的书也应该有一章(或两章)关于这方面的内容。如果遇到特定问题,请向 stackoverflow 发布问题。

5) 删除设计器中的属性,然后为 S-Space 定义提供默认值。我相信你不能和设计师一起做这件事。您需要右键单击 edmx 文件并使用 Xml 编辑器打开它并手动编辑它。另请参阅:EF 中的问题,映射片段,无默认值且不可为空

6)您可以在数据库中创建一个视图,也可以在 edmx 文件中使用 E-SQL 创建实体集(我认为这将是只读的),或者您可以使用实体拆分。这些中的每一个本身可能都是一个大话题,所以我认为你应该找到更多关于这些的信息,如果你有更具体的问题/问题,请回来

于 2012-12-06T00:32:57.463 回答