生成ADO.NET实体数据模型文件,从哪里开始?

时间:2009-10-26 08:20:58

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

我们的产品部分使用Delphi和部分.NET构建,在我们目前的.NET迁移状态下,我们在Delphi组件中有数据字典,因此这是主人。

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

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

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

是否有类似的简单路径来代替使用实体模型代码?或者我是否必须生成所有这些xml文件并运行工具来生成资源等?

是否有人处于同样的情况并且可以对此有所了解?

1 个答案:

答案 0 :(得分:3)

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

实际上有3个文件组成了EDM。 (虽然在visual studio中它们都被合并为1个EDMX文件)

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

从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文件中的代码。