2009-10-26 89 views
2

我们的产品部分使用Delphi和部分.NET构建,并且在我们迁移到.NET的当前状态下,我们在Delphi组件中有数据字典,因此这是主数据库。生成ADO.NET实体数据模型文件,从哪里开始?

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

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

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

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

有没有人处于相同的情况,并可以对此有所了解?

+0

.NET 4是一个选项吗? EF 4中有更多的模型生成选项。对于EF 1,您需要XML。 – 2009-10-26 14:22:12

+0

目前还没有,没有。我们明年可能会升级。 – 2009-10-26 23:40:39

回答

3

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

实际上有3个文件组成EDM。 (虽然在视觉工作室它们都被合并为1个EDMX文件)

  • SSDL - 存储(描述数据库)
  • CSDL - 概念(描述数据对象)
  • MSL - 映射(描述之间的映射存储和概念)

从EDM文件时,EDM Generator可用于产生所有三个从数据库连接,就在MS1和CSDL从SSDL,或者它可以生成从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文件的一些代码。

相关问题