4

尝试使用 ASP.NET 样板和实体框架实现 DDD

Employee目的

public class Employee : Entity<long>
{
   public virtual string Name { get; protected set; }

   public virtual Nationality Nationality { get; protected set; }
}

定义属性Nationality,它是值对象

public class Nationality : ValueObject<Nationality>
{      
    public virtual string Name { get; protected set; }
}

尝试添加数据库迁移会产生明显的错误

EntityType 'Nationality' has no key defined. Define the key for this EntityType.

查看了在数据库中持久保存值对象的 3 种不同方法

我是否应该手动实施上述方法之一来坚持ValueObject如果是的话,有哪些最佳实践)?还是已经由 ASP.NET Boilerplate Framework 完成?

4

1 回答 1

1

当您使用 Value 对象时,不应在 Employee 对象的 Nationality 属性上使用 virtual。删除 virtual 关键字。那应该解决它。仅当您引用实体类型时才使用虚拟。你也可以去掉 Nationality.Name 属性上的 virtual 。

于 2017-03-19T12:59:23.623 回答