实体框架和动态模式

时间:2017-05-12 17:03:16

标签: c# sql-server entity-framework

我继承了一个与许多不同客户数据库通信的应用程序。

客户端数据库中的大多数这些表具有相同的模式 - 但是有一些表具有包含税务信息的额外自定义列(是的 - 糟糕的想法 - 我知道......我没有设置它)。 / p>

这些额外的列可以命名为任何名称。它们在运行时是已知的,因为它们可以在另一个表中查找。

我可以将EF设置为读取/写入这些表(跳过动态列),但我确实需要这些信息 - 因为它是税务数据。

我认为我最好的路线是添加额外属性的固定模型,可以通过这些动态列填充。

如何在不使用每次调用的自定义SQL语句的情况下让Entity Framework动态读取和写入这些列?

我可以进行额外的读写操作,分别读取和写入这些额外的列(使用自定义sql)...但是必须有一些方法来覆盖EF,以便它知道这些额外的列并且可以正确处理它们。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

在第一步中,您可以直接询问_INFORMATION_SCHEMA_或其他元数据表,以了解您希望上下文所在的表是否具有这些列。根据这些信息,您可以使用不同的DbContext(通用可能会有效),但可以使用MappingConfiguration创建它,如果不在列中,您可以忽略列,或将它们映射到你想要的POCO课程。