EntityFramework - 保存包含实体的聚合根

时间:2016-09-30 00:01:15

标签: c# entity-framework visual-studio ddd-repositories

我在我的C#应用​​程序中使用实体框架。

我接近完全实现它,但是对于流畅的API有点困惑。

我的课程概述(简化)

class Customer : IEntity {
    public Id { get; set; }
    public Name Name { get; set; };

    public Customer() {}

    public Customer( Name name ){
        this.name = name;
    }
}


class Name {
    public String Title;
    public String Forename;
    public String Surname;

    public Name(){}

    public Name( String Title, String Forename, String Surname ){
        // assign values
    }
}

使用实体框架保存似乎工作正常;至少没有任何例外。 但是,当我尝试让所有客户使用DbContext.getAll()时,它会在尝试将customer.Name.Forename打印到输出窗口时抛出NullReferenceException。我可以看到customer.Name为空 - 这显然是造成该异常的原因。

为什么Name(以及所有其他类似属性)为null?我该如何解决这个问题?

注意: 我在Customer模型中有一个日期,这是在我将以下内容添加到我的DbContext实现后正确填充...

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
        modelBuilder.Properties<DateTime>().Configure(c => c.HasColumnType("datetime2"));
}

我想我需要在这里添加一些东西才能正确映射名称。我只是不确定如何去做。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我在[ComplexType]课程上方添加了Name,现在正在使用。

为清楚起见:

[ComplexType]
class Name {
    ...
}