2011-07-01 16 views
1

私はこのようなGetObjectByKey機能を使用してレコードを取得しようとしていることはできません。Entity Frameworkの - GetObjectByKey主キー

Enumerable<KeyValuePair<string, object>> entityKeyValues = 
       new KeyValuePair<string, object>[] { 
       new KeyValuePair<string, object>("JournalId", 
            new Guid("6491305f-91d9-4002-8c47-8ad1a870cb11")) }; 

EntityKey key = new System.Data.EntityKey(string.Format("{0}.{1}", ObjectContextManager.Current.DefaultContainerName, "Journal"), entityKeyValues); 

しかし、私はこの例外に

System.ArgumentExceptionのを取得します:提供されたキーと値のペアのリスト には、誤った数のエントリが含まれています。 「Namespace.Journal」タイプで定義されているキーフィールドは、 の54個ですが、1が提供されています。パラメータ 名前:キー

タイプジャーナルはビューです。

どのように私はそれが必要な理由は、私はジェネリック型を指定したくないので、1つのフィールドだけでその関数を使用することができます、1つは、指定されたエンティティセット名から取得する。事前に

おかげで、データベース内の

+0

"54個のキーフィールドが定義されています"モデルをチェックします。つまり、テーブル全体がキー、つまりすべてのフィールドであると思うように聞こえます。 –

+0

データベースビューはテーブルではありませんが、ビューVIEW_METADATAのビューが作成されているためです。 – brittongr

答えて

1

ビューは、鍵を持っていませんが、EFはあなたがすべての非NULL可能、非バイナリ列を取るモデルEFにビューを挿入するので、それを必要とし、それらを定義しますキー - キーが54列で構成されている瞬間です。解決策はEDMXファイルを(XMLとして)手動で変更していますが、デフォルトのEDMXデザイナでは、データベースからの各更新後に変更が削除されます。

+0

それは私がモデルのテーブルに追加されたデータベースビューを持っていて、たくさんありますので、それは私の問題です。 – brittongr

関連する問題