保存包含实体的聚合根
本文关键字:包含 实体 保存 | 更新日期: 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 {
...
}