问题描述
|
我已经“继承”了一个EF 4.0“ 0”文件。当前,给定的属性名称和列名称在生成的C#和sql模式中是相同的。此后,我已经升级到EF 4.1,并更改了代码生成项,以生成
DbContext
@H_502_3@而不是ObjectContext
@H_502_3@。
我想做的是生成一个sql模式,其中的列名可能不同。例如,假设我有一个Product
@H_502_3@的Id
@H_502_3@属性/列;我想为该类生成Id
@H_502_3@(通过T4模板生成),为该列生成ProductId
@H_502_3@(以某种方式通过图中的“从模型生成数据库...”上下文菜单项),然后使用基于代码的流利配置功能来生成通过EntityTypeConfiguration<T>.HasColumnName()
@H_502_3@映射两个。
我可以这样做还是有合理的选择?我意识到我可以使用4.1在代码中完成所有操作,但是想知道这种“过渡”方法是否可行。
解决方法
我放弃了这一点,转而采用完全代码优先的方式,但是我认为有一种方法可以做到这一点:
在模型中,使用列名。
从“ 0”生成SQL。
在T4模板中,从某种映射文件(例如csv)中读取并应用一些逻辑,以根据需要生成C#类并生成“ 9”调用。
这应该可以,但是比我创建正确的模板要付出的努力更多。