1

次のような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つだけです。

前もって感謝します

4

1 に答える 1

1

データベース内のビューにはキーがありませんが、EFはキーを必要とします。そのため、モデルにビューを挿入すると、EFはnull不可、非バイナリのすべての列を取得し、それらをキーとして定義します。現時点では、キーは54列で構成されています。 。解決策は、EDMXファイルを(XMLとして)手動で変更することですが、デフォルトのEDMXデザイナーでは、データベースから更新するたびに変更が削除されます。

于 2011-07-01T11:13:36.150 に答える