我一直在玩實體核心類如的DbContext,並出現以下錯誤試圖保存對象:淨實體多對多的SaveChanges
同時節省了不公開外鍵的實體時出錯 屬性爲他們的關係。 EntityEntries屬性 將返回null,因爲無法將單個實體標識爲異常的源 。通過在您的實體類型中公開外鍵屬性,可以更輕鬆地處理異常,同時保存 。有關詳細信息,請參閱 InnerException。
我基本上我的ERD用多對多如
comment comment_category category
id comment_id id
text category_id name
的comment_category表是一個組合主鍵映射意見類別
檢索數據是好的,但是當我嘗試以節省它抱怨的關係
我最感興趣的模型看起來像
public class Comment
{
[Key]
public int Comment_Id {get;set;}
public string Text {get;set;}
public virtual List<Category> Categories { get; set; }
}
public class Comment_Category
{
[Key, Column(Order = 0)]
public int Comment_Id {get;set;}
[Key, Column(Order = 2)]
public int Factor_Id {get;set;}
}
而且它的使用,如
#Comments have Categories with Category Id filled and Comment Id null
List<Comment> comments = getComments();
using(dbContext db = new dbContext())
{
foreach(Comment c in comments)
db.Comments.add(c);
db.SaveChanges();
}
我不完全知道爲什麼它可以很容易找到它不夠好,但有一個硬節省時間。我能想到的唯一區別是我保存的評論是新的,所以他們只有評論類別沒有評論ID只是類別ID。我認爲它會保存評論並將comment_id分配給comment_category表,因此我不知道如何完成此操作
我意識到也許我的方法是錯誤的,因爲我使用映射表而不是實際實體的類別,所以如果有人知道更好的方式,請分享。
謝謝!
有什麼的InnerException? – SLaks