2014-04-09 16 views
0

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

Entity 
    string[] Names 

Entity_Names 
    string Name 
    int LanguageId // 9 = English 

不过,我想凝结成

Entity 
    string Name // I only want the English name 

此使用SQL查询,这将是非常简单的 - 但如何我可以通过Entity Framework的流畅配置来做到这一点吗?这些实例还有很多,但这是我能想到的最简单的例子。

回答

1

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

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

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

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

+0

这很好,因为我正在阅读的数据是不可变的。我决定我可以使用Discriminator列 - Map(m => m.Requires(x => x.LanguageID).HasValue(9))' –

相关问题