我目前正在尝试使用Entity Framework 4.1的RC及其代码优先方法为我的域对象实现存储库。
现在,我有一个域实体“Voyage”,该实体具有封装在“VoyageNumber”类型中的唯一标识符

public class VoyageNumber
{
    private readonly string number;

    public VoyageNumber(string number)
    {
        Validate.NotNull(number, "VoyageNumber is required");

        this.number = number;
    }

    public string Id
    {
        get { return number; }
    }

现在,当我在DbContext的配置中执行此操作时,我得到一个异常:
modelBuilder.Entity<Voyage>().HasKey<VoyageNumber>(k => k.VoyageNumber);



以及当我尝试这样做时:
modelBuilder.Entity<Voyage>().HasKey<string>(k => k.VoyageNumber.Id);



我真的必须丢弃我的VoyageNumber并将其替换为原始类型吗?

最佳答案

这是限制。关键成员只能是直接在实体中的标量属性。复杂类型表示为不支持的复杂属性。

09-25 21:31