2010-07-01 50 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