【问题标题】:A few basic questions about ADO.NET Entity Framework 4关于 ADO.NET Entity Framework 4 的几个基本问​​题
【发布时间】:2012-12-06 08:32:57
【问题描述】:

大约两年前,我确实在 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 中为 NOT NULL)值不在我选择的子集中,会发生什么情况?

6) 如何通过查询或连接两个或多个表来创建表。

【问题讨论】:

    标签: entity-framework entity-framework-4 ado.net


    【解决方案1】:

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

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

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

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

    5) 删除设计器中的属性,然后为 S-Space 定义提供默认值。我相信你不能和设计师一起做这件事。您需要右键单击 edmx 文件并使用 Xml 编辑器打开它并手动编辑它。另请参阅:Issue in EF, mapping fragment,no default value and is not nullable

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

    【讨论】:

    • 非常感谢您的回答。这就是我恢复记忆所需的全部帮助。它为我节省了很多时间。再次感谢。 :-)
    猜你喜欢
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多