尝试使用ASP.NET Boilerplate和实体框架实现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 different approach to persist value object in database

我是否应该手动实施上述方法之一来持久化ValueObject(如果是,那么一些最佳实践)是什么?还是已经由ASP.NET Boilerplate Framework完成?

最佳答案

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

关于c# - 使用ASP.NET Boilerplate将ValueObject存储在数据库中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42884921/

10-12 23:46