【问题标题】:Mapping collection of strings with Entity Framework or Linq to SQL使用 Entity Framework 或 Linq 将字符串集合映射到 SQL
【发布时间】:2010-07-01 21:10:46
【问题描述】:

我想知道是否可以将一对多数据库关系映射为父对象类上的基元数组。例如,假设我有一个如下数据库:

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 & Entity Framework 的默认行为是为 PERSON_EMAIL_ADDRESSES 表提供一个单独的类,并在 Person 对象上提供该类型的集合...这是我不想要的。

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

提前致谢, 韦恩

【问题讨论】:

    标签: .net linq linq-to-sql entity-framework


    【解决方案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。

    【讨论】:

    • 嗨克雷格。谢谢(你的)信息。我只对只读列表感兴趣,但我希望通过映射来处理复杂性,而不必担心其他类型或投影。看起来 NHibernate 工具可以做到这一点,我希望 L2S 和/或 L2E 可以做类似的事情。虽然建议 +1...
    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 2010-09-07
    • 2023-04-02
    • 1970-01-01
    • 2021-02-24
    • 2013-11-26
    • 1970-01-01
    • 2022-12-30
    相关资源
    最近更新 更多