保存包含实体的聚合根

本文关键字:包含 实体 保存 | 更新日期: 2023-09-27 18:09:30

我正在为我的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(以及所有其他类似属性)为空?我该如何解决这个问题?

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

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

我想我需要在这里添加一些东西,以便能够正确地映射名称。我只是不确定该怎么做。

保存包含实体的聚合根

我在Name类上面添加了[ComplexType],现在它正在工作。

清晰的

:

[ComplexType]
class Name {
    ...
}