将多个表展平为单个类型

时间:2014-04-09 11:41:15

标签: c# entity-framework

我正在尝试使用EntityFramework的Fluent配置建模数据库。我无法编辑或以其他方式控制数据库架构。我试图建模的实体有很多查找表 - 例如,一个属性(它的名称)有一个专用于它的整个表,其名称与一个id相关联(它是' s语言)。换句话说,它在数据库中看起来有点像这样:

Entity
    string[] Names

Entity_Names
    string Name
    int LanguageId // 9 = English

但是,我试图将其浓缩为

Entity
   string Name // I only want the English name

使用SQL查询,这很简单 - 但是如何通过Entity Framework的流畅配置来实现呢?这些实例还有很多,但这是我能提出的最简单的例子。

1 个答案:

答案 0 :(得分:1)

如果您确实设法以这种方式展平模型,那么它几乎肯定会成为数据的只读视图。实体框架无法知道应该在另一个表中查找字符串属性并用整数id替换。

如果您只是查看,那么留下两个选项。编写一个数据库视图,用一个字符串替换id,并为该视图构建一个实体。

或构建与架构模型兼容的实体,并将数据投影到dto。

第二种方法是我更喜欢的方法,因为这意味着如果你确实需要CRUD,你仍然拥有兼容的实体模型。