C# 使用ASP.NET样板在数据库中存储ValueObject
尝试使用ASP.NET样板文件和实体框架实现DDDC# 使用ASP.NET样板在数据库中存储ValueObject,c#,asp.net,asp.net-mvc,entity-framework,aspnetboilerplate,C#,Asp.net,Asp.net Mvc,Entity Framework,Aspnetboilerplate,尝试使用ASP.NET样板文件和实体框架实现DDD 员工对象 public class Employee : Entity<long> { public virtual string Name { get; protected set; } public virtual Nationality Nationality { get; protected set; } } 尝试添加数据库迁移会产生明显错误 EntityType 'Nationality' has no k
员工
对象
public class Employee : Entity<long>
{
public virtual string Name { get; protected set; }
public virtual Nationality Nationality { get; protected set; }
}
尝试添加数据库迁移会产生明显错误
EntityType 'Nationality' has no key defined. Define the key for this EntityType.
看了看
我是否应该手动实现上述方法之一以持久化
ValueObject
(如果是,有哪些最佳实践)?或者它已经由ASP.NET样板文件框架完成了?当您使用Value对象时,不应在Employee对象的National属性上使用virtual。删除虚拟关键字。这应该可以解决问题。仅当引用实体类型时才使用虚拟。您还可以在national.Name属性上删除虚拟对象。什么是ValueObject
?我认为这个错误与继承有关<代码>国籍应该被解释为值对象(ComplexType
在EF术语中)。@GertArnold是@GertArnold当然,我使用的是EF版本6.1.3
。我可以在EF6中毫无问题地使用您的代码,也就是说:使用ABP中的ValueObject
和实体
。最后,请尝试modelBuilder.ComplexType()
@GertArnoldComplexType
是我最后要做的,但它将数据库结构反规范化,National
的列放入Employee
的表中。
EntityType 'Nationality' has no key defined. Define the key for this EntityType.