1

我已经“继承了”EF 4.0 .edmx文件。目前,生成的C#和SQL模式中给定的属性名称和列名称是相同的。自从升级到EF 4.1后,我更改了代码生成项目以生成DbContext而不是ObjectContext当从.edmx文件生成SQL模式时,是否可以为属性生成不同的列名称?

我想要做的是生成一个SQL模式,列名可能不同。例如,假设我的Id属性/列为Product;我想为该类生成Id(通过T4模板生成),并为该列生成ProductId(不知何故,通过从Model生成数据库...上下文菜单中的条目),然后使用基于代码的流畅配置能够通过EntityTypeConfiguration<T>.HasColumnName()映射两者。

我可以这样做还是有一个合理的选择?我意识到我可以用4.1的代码完成这些工作,但是想知道这种“过渡”方法是否可行。

+0

好问题 - 当模式已经存在时,通过映射很容易做到,但现在我很好奇这样做...... – 2011-06-15 14:22:14

回答

0

我赞成完全代码先放弃了这个,但我认为有办法做到这一点:

  1. 在这个模型中,使用列名。
  2. .edmx生成SQL。
  3. 在T4模板中,从某种类型的映射文件(例如csv)中读取数据,并根据需要应用一些逻辑来生成C#类,并生成HasColumnName调用。

这个应该工作,但涉及更多的努力比我愿意给创建正确的模板。

+0

我也遇到过这个问题。不知道该怎么做。但我同意你的观点,无论如何,代码优先是一种更好的方式。但是,知道这一点还是很好的。 – lahsrah 2011-08-03 21:57:54

相关问题