【问题标题】:Is it possible to map a collection of value objects with EF4.x?是否可以使用 EF4.x 映射一组值对象?
【发布时间】:2012-02-16 04:54:22
【问题描述】:

我找不到映射值对象集合的方法,这可能吗?

public class AnEntity
{
    public int Id {get;set;}
    public ICollection<Guid> Values {get;set;} // <-- this
}

谢谢, E.

【问题讨论】:

    标签: entity-framework-4 ef4-code-only


    【解决方案1】:

    因为这是不可能的。您只能映射实体集合(带键的类)。您可以通过使用特殊实体并公开为您提供投影的第二个属性来解决此问题:

    public class SecondEntity {
        public Guid Id { get; set; }
    }
    
    public class AnEntity {
        public int Id { get; set; }
        public virtual ICollection<SecondEntity> Values { get; set; }
    
        public IEnumerable<Guid> GuidValues { 
            return Values.Select(v => v.Id);
        }
    }
    

    如果您希望集合很小,您也可以使用单个字符串字段而不是相关集合,并使用String.SplitString.Join 来提供集合的模拟。

    【讨论】:

    • 这是对 SecondEntity 的充分和完整的定义吗?它不需要一个 FK 字段吗?
    猜你喜欢
    • 1970-01-01
    • 2023-01-04
    • 2017-09-25
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    相关资源
    最近更新 更多