2017-03-19 36 views
3

嘗試使用ASP.NET樣板和Entity Framework來實現DDD商店的ValueObject在數據庫中使用ASP.NET樣板

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完成了

+0

什麼是'ValueObject '?我認爲這個錯誤與繼承有關。應該將「國籍」解釋爲值對象(EF中的「ComplexType」)。 –

+0

@GertArnold它是[ASP.NET鍋爐板框架定義類型](http://www.aspnetboilerplate.com/Pages/Documents/Value-Objects) – tchelidze

+0

@GertArnold當然,我使用EF版本'6.1.3'。 – tchelidze

回答

1

當您使用Value對象時,不應在Employee對象上的Nationality屬性上使用虛擬。刪除虛擬關鍵字。應該修復它。僅當您引用實體類型時才使用虛擬。你也可以在Nationality.Name屬性中刪除虛擬。