EF中的动态属性绑定?

时间:2016-09-12 21:07:02

标签: c# entity-framework

显然,相同的列值类型因环境而异,对于同一个数据库实体(表)和他们拒绝更新为普通类型 - 不要问为什么!

我正在使用Entity Framework(版本6.1.3)和工作单元进行数据访问。而且,正如你可以猜到的那样,因为DEV& QA数据库定义与同一列不匹配。

好消息:
我们不保存到这些特定的表中 - 我们只查询那些特定的表。

样本模型:
显然列数多于此。

public partial class Transactions
{
    [Key]
    public int TransactionId { get; set; }

    public float Amount { get; set; } //<-- This type differs between database environments
}

我的问题:

  • 有没有办法在Entity Framework中动态绑定列的值?
  • 或者,我可以将它视为一个动态的引擎盖......并将其转换为对我的模型不变的预期类型吗?

最佳 - 并且要清楚:
我想具体定义属性,并有实体框架&#34;转换&#34;来自未知类型&amp;进入混凝土类型 - 但是在引擎盖下。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果列的类型兼容(即所有数字),则可以在类上具有公共类型,然后禁用模型检查(和迁移)。此解决方案可以在某些DBMS上运行,而不在某些其他DBMS上运行(取决于提供商)。

您可以使用强制转换编写视图并将其映射到模型中(而不是表格)。

您可以使用EF编写直接查询(官方文档https://msdn.microsoft.com/en-us/data/jj592907.aspx,类似于Dapper解决方案,具有相同的优点和缺陷,在您的情况下,延迟加载将无效)。