C# EF Fluent映射-从另一个表映射集合字段

C# EF Fluent映射-从另一个表映射集合字段,c#,entity-framework,entity-framework-6.1,C#,Entity Framework,Entity Framework 6.1,可能已经有人问过这个问题了,但我找不到一个完全符合我所要做的事情的问题 在数据库级别,我有TableB,它只有两个字段——TableA的外键和nvarchar(max)代码字段。表A和表B之间的关系是一对多 在EF级别,我想完全跳过映射表B。表A如下所示: public class TableA { public ICollection<string> BCodes {get; set;} } 公共类表a { 公共ICollection B代码{get;set;} } 我

可能已经有人问过这个问题了,但我找不到一个完全符合我所要做的事情的问题

在数据库级别,我有TableB,它只有两个字段——TableA的外键和nvarchar(max)代码字段。表A和表B之间的关系是一对多

在EF级别,我想完全跳过映射表B。表A如下所示:

public class TableA
{
    public ICollection<string> BCodes {get; set;}
}
公共类表a
{
公共ICollection B代码{get;set;}
}
我希望从所有相关TableB实体的代码字段填充BCodes。我知道我可以使用视图和数据库上的其他黑客来实现这一点,但这破坏了关注点的分离。这是否可以使用EF实现,或者我是否必须只映射一个字符串属性的TableB实体

更新
我应该澄清,对于我的具体案例,这可以是只读集合。遇到这个问题的其他人可能有不同的需求,因此如果您有读/写方法来实现它的想法,那也太好了。

至少在EF 6.1之前,不可能定义基元类型集合(例如字符串集合)。这必须是间接的

我见过的最好的方法是


或者,您可以使用支持此功能的NHibernate。例如,.

出于好奇,您为什么不想要映射?我主要尝试将数据库实现细节与实体实现分开。在数据库级别,我需要将TableB放在一个单独的表中,因为它是一对多的,但这不应该真正渗入到我的实体中。就C#而言,这些代码只是TableA的一个属性。但在这种情况下,您要么拥有
TableB
的集合,要么拥有
string
的集合。它真的有什么区别吗?在实现方面,没有,但在设计方面,这是一个根本的区别。TableB在我的应用程序中不是一个真正的实体,没有任何意义。它没有责任,也不代表任何具体内容。这基本上只是数据库实现细节泄漏到代码中的抽象,这是EF w/fluent映射中的POCO应该防止的。