我在我的實體框架模型中有一個子對象。這樣實體框架的子類,現在需要Id/Key?
public MyModel() {
public long Id { get; set; }
public string Name { get; set; }
public MyModelReference Reference { get; set; }
}
public MyModelReference() {
public bool IsActive { get; set;}
public bool Name { get; set;}
}
這工作得很好,在SQL東西它創建1臺名爲爲MyModel,並在那裏我有以下幾列
標識
名稱
Reference_IsActive
參考名稱
這很好,因爲在我的課上,所有與MyModel相關的參考資料放在我的MyModelReference類中,我可以通過訪問MyModel中的Reference屬性來訪問這些屬性。漂亮和整潔。
現在我在我的庫中有其他模型,我想在MyModel和MyOtherModel之間添加一個鏈接,但由於此屬性特別針對引用,因此我想將它添加到MyModelReference類中。所以我改變它太像這樣
public MyOtherModel() {
public long Id { get; set; }
public string Name { get; set; }
}
public MyModelReference() {
public bool IsActive { get; set;}
public bool Name { get; set;}
public long OtherModelId { get; set; }
public MyOtherModel OtherModel { get; set; }
}
現在,出於某種原因,當我做到這一點,運行命令
-update-database
我得到一個錯誤,像這樣
的EntityType「ModelReference」有沒有定義密鑰。定義此EntityType的關鍵字。 ModelReferences:EntityType:EntitySet'ModelReferences'基於沒有定義鍵的類型'ModelReference'。
爲什麼我必須添加一個鍵到子類,當父類有Id/Key定義?我有不正確的設置嗎?
我希望這個設置給我一個表有以下的列
標識
名稱
Reference_IsActive
Reference_Name
Reference_OtherModelId
對不起不知道你是什麼意思?我正在使用我自己的類型? – Gillardo
按照慣例,沒有指定主鍵的類型被視爲複雜類型。 Code First有些情況下不會檢測到複雜類型。請嘗試明確定義您的MyModelReference爲複雜類型。在您的模型配置上添加:modelBuilder.ComplexType() –
轉到您的上下文,找到OnModelCreating(DbModelBuilder modelBuilder)並添加modelBuilder.ComplexType()。 –