ASP.NET 4.0 Webforms アプリで Entity Framework 4 (データベース ファースト アプローチ) を使用しています。
私が基本的に行っていることは、編集するエンティティを my から取得しObjectContext
、ユーザーがデータを入力する (または既存のデータを変更する) フィールドを Web フォームに表示することです。
データを保存するときが来たら、Web フォームから値を読み取り、新しいEntity
インスタンスを作成します。次に、これが新しいエンティティであるかどうかを検出するジェネリック メソッドを呼び出しAddOrUpdate
ます (したがって、挿入する必要があります)。 )、または既存のものである場合(したがって、既存のデータを更新する必要があります)。
とを使用する私のメソッドはEntityKey
、オブジェクト コンテキストがこのオブジェクトを既に認識しているかどうかを確認します。これは、Microsoft の Cesar de la Torre が彼のブログ投稿で示しているものと非常によく似ています。
public static void AddOrUpdate(ObjectContext context, EntityObject objectDetached)
{
if (objectDetached.EntityState == EntityState.Detached)
{
object currentEntityInDb = null;
if (context.TryGetObjectByKey(objectDetached.EntityKey, out currentEntityInDb))
{
// attach and update the existing entity
}
else
{
// insert new entity into entity set
context.AddObject(objectDetached.EntityKey.EntitySetName, objectDetached);
}
}
}
これは問題なく機能しました-最も長い間。context.TryGetObjectByKey
しかし、今日、突然、突然、ステートメントで次のような例外が発生し続けます。
System.InvalidOperationException: ID 'MyEntityType' を持つ型のオブジェクト マッピングが見つかりませんでした
このコアコードで何かを変更したことをまったく思い出せません-エンティティタイプが定義ID
されており、に格納されている値EntityKey
は実際にデータベースに存在します...すべてがうまくいくはずです-しかし、それは私に失敗し続けます...
ここで一体何が起こったのですか??
このトピックに関するいくつかのブログとフォーラムの投稿を見つけましたが、実際に私を啓発したり、問題を解決するのに役立つものはありませんでした. 私は何かを台無しにしたに違いありません-悪い-しかし、私は本当に木のために森を見ることができません-何かヒントはありますか?