ここで規定されている方法に従って、最初にEFコードを使用して1対1の関係を設定しました。
私のマッピングは次のようになります...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Asset>()
.HasRequired(i => i.NewsItem)
.WithOptional(e => e.Asset)
.Map(m => m.MapKey("NewsItemId"));
}
しかし、私がこの例外を受け取ったとき...
'Asset_NewsItem'AssociationSetからの関係は'Deleted'状態にあります。多重度の制約がある場合、対応する「Asset_NewsItem_Source」も「Deleted」状態である必要があります。
このコードが実行されるときはいつでも:
var entry = _db.NewsItems.Find(id);
entry.Asset = new Asset();
_db.DbContext.SaveChanges();
NewsItemに関連付けられている以前のアセットに削除のマークを明示的に付けると、機能するようになりますが、ちょっと奇妙に思えます。マッピングに基づくと、上記のコードは単純に機能するはずです...古いアセットを新しいアセットに置き換えます。
私は何か間違ったことをしていますか?正しく機能させるために、マッピングで指定する必要があるものはありますか?または、このような関連オブジェクトを削除してから追加する必要があるのは、単にEFの方法ですか?