【问题标题】:Generating ADO.NET Entity Data Model files, where to start?生成 ADO.NET 实体数据模型文件,从哪里开始?
【发布时间】:2010-12-10 01:35:51
【问题描述】:

我们的产品部分是使用 Delphi 构建的,部分是使用 .NET 构建的,在我们当前迁移到 .NET 的状态下,我们在 Delphi 组件中拥有数据字典,所以这是主组件。

由此我们通过模板生成.NET源代码,支持简单查询,也支持Linq2Sql,因为我们的产品需要SQL Server。

但是,我想切换到 .NET 中的新实体模型而不是 Linq2Sql,但我不知道这需要做多少工作。我发现的所有教程或示例似乎都围绕着在设计器中对数据模型进行建模,或者从数据库中获取数据,都不能满足我们的需求。

在 Linq2Sql 中,我们用 TableMappingAttribute 和 ColumnMappingAttribute 注释了我们的查询类,然后生成了 DataContext 的后代,这一切都很好。

是否有类似的简单途径可以改为使用实体模型代码?还是我必须生成所有这些 xml 文件并运行工具来生成资源等?

有没有人遇到过同样的情况,可以解释一下吗?

【问题讨论】:

  • .NET 4 是一个选项吗? EF 4 中有更多模型生成选项。对于 EF 1,您需要 XML。
  • 暂时没有,没有。我们可能会在明年升级。

标签: c# .net entity-framework code-generation


【解决方案1】:

不幸的是,我认为您确实需要 XML 文件。

实际上有 3 个文件构成 EDM。 (尽管在 Visual Studio 中它们都被合并为 1 个 EDMX 文件)

  • ssdl - 存储(描述数据库)
  • csdl - 概念(描述数据对象)
  • msl - 映射(描述存储和概念之间的映射)

从 EDM 文件中,EDM Generator 可用于从数据库连接生成所有三个,仅从 ssdl 生成 msl 和 csdl,或者它可以从 csdl 生成实际数据对象。

不幸的是,这并不是 XML 的使用停止的地方。实体框架在运行时仍然需要执行从对象到存储的转换等。必须在Entity framework connection string 中提供对 3 个 EDM 文件的引用。 (更多信息building EF connection strings

您可能会想出一些方法来生成数据对象代码(或使用各种必需的属性和额外方法自动标记您现有的代码) - 像 Linq 一样,有 EdmEntityTypeAttribute 和 EdmScalarPropertyAttribute 等属性放在类和属性,但没有 3 个 EDM 文件,实体框架将不知道如何处理您的数据对象。生成器还将其他内容添加到数据对象类中,例如属性更改事件,以及从 EntityObject 的继承。我不确定实体框架的正确操作需要哪些额外的东西,以及开发人员需要什么。我会假设数据上下文需要属性更改事件来跟踪更改。

在 EDM 工具上有一个 article here 和一些用于生成/拆分 EDMX 文件到其组件 ssdl/csdl/msl 文件的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 2010-09-15
    • 2018-01-07
    相关资源
    最近更新 更多