2012-04-01 115 views
0

我想弄清楚什么是最好的方式去实体框架代码生成与“数据库第一”的方法。我希望模型的完整主要描述是实际的数据库模式,注释存储在数据库中的表或扩展属性中。对模型第一或代码优先方法不感兴趣。不反对编写自定义代码来实现它是否会产生最高质量的解决方案。这里有一些想法:实体框架代码生成

(1)从数据库生成EDMX。使用自定义代码向EDMX添加关于唯一性和其他当前未内置到EF中的约束的注释。使用T4模板从EDMX生成代码。 (2)编写一个自定义工具,从数据库中生成“代码优先”类。解决方案中没有EDMX文件。

(3)还有其他的东西吗?

似乎#1需要更深入的EF知识和更多的实际工作,而不是#2,我现在反对,如果有显着的好处。

有什么建议吗?

+0

你知道你可以做“代码优先”,而不是生成架构,不是吗?您所要做的就是创建类以匹配数据库模式,但您必须在两个地方进行任何更改。 – tvanfosson 2012-04-01 13:58:57

+0

@Ivan,关于“您所要做的就是创建类以匹配数据库模式”,问题是直接生成此代码还是将EDMX文件放在中间。 – 2012-04-01 14:09:25

+0

我喜欢代码首先给出的类控件的控件,并且首先发现代码比设计器自动生成的代码更容易测试。事实上,在代码首次发货之前,我不会使用EF;使用设计器的Linq2SQL更好。现在,我首先使用EF代码作为MSSQL的第一选择。不幸的是,我没有发现任何这些方法足以在IDE(设计器或代码)中设计整个模式,并且通常使用DB-first和代码优先模型。 – tvanfosson 2012-04-01 14:18:32

回答

0

好吧,没有什么比将表从服务器资源管理器拖到edmx设计器表面更简单了。我就是这么做的。我没有对模型进行任何自定义,所以我可以删除它的一部分重新生成。

0

您可以使用EF从数据库导入模型。右键单击EF设计器并选择“从数据库更新模型”选项。

如果你想多一点,你可以尝试http://radarc.net。它是创建脚手架和CRUD的代码生成工具。它首先使用T4模板和代码,以便您可以自定义其生成代码的方式。

相关问题