2010-07-01 51 views
1

我想知道是否可以将一对多数据库关系映射为父对象类上的基元数组。例如,假设我有一个数据库,如下所示:使用实体框架或Linq将字符串集合映射到SQL

TABLE: PERSON 
    ID - int 

TABLE: PERSON_EMAIL_ADDRESSES 
    PERSON_ID - int 
    EMAIL_ADDRESS - string 

对于我的Person类,我想有以下几点:

public class Person 
{ 
    public int ID { get; set; } 
    public string[] EmailAddresses { get; set; } 
} 

默认的LINQ to SQL &实体框架的行为会给我一个PERSON_EMAIL_ADDRESSES表的单独类,以及Person对象上的那个类型的集合......这是我不想要的。

看起来像这样可以用NHibernate完成描述here,但是有没有办法用EF或Linq到SQL来做到这一点?

由于提前, 韦恩

回答

1

如果你想有一个只读列表,与你的NHibernate的样品,你应该映射像往常一样,然后项目:

var q = from p in Context.People 
     select new Person // Where this is your Person type above, not a mapped entity type 
     { 
      ID = p.ID, 
      EmailAddresses = from pea in p.EmailAddresses 
          select pea.EmailAddress 
     }; 

这个工作在两个L2S和L2E。如果你想读写,那么你的需要的ID。

+0

嗨克雷格。谢谢(你的)信息。我只对一个只读列表感兴趣,但我希望通过映射关注复杂性,而不必担心使用其他类型或投影。它看起来像NHibernate的工具可以做的,我希望L2S和/或L2E可以做类似的事情。 +1的建议虽然... – WayneC 2010-07-01 22:25:12