DbContextなどのエンティティコアクラスで遊んでいて、オブジェクトを保存しようとすると次のエラーが発生しました。
関係の外部キープロパティを公開していないエンティティの保存中にエラーが発生しました。単一のエンティティを例外のソースとして識別できないため、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テーブルに割り当てると想定したため、これを実行する方法がわかりません。
カテゴリの実際のエンティティではなくマッピングテーブルを使用しているという点で、おそらく私のアプローチが間違っていることに気付きました。誰かがより良い方法を知っている場合は、共有してください。
ありがとう!