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 个。参数名称:key

Journal 类型是一个视图。

我怎么能只用一个字段来使用该函数,我需要它的原因是因为我不想指定一个泛型类型,只需要一个从给定的实体集名称中获取它。

提前致谢

4

1 回答 1

1

数据库中的视图没有键,但 EF 需要它,因此当您将视图插入模型时,EF 将采用所有不可为空的非二进制列并将它们定义为键 - 目前您的键由 54 列组成. 解决方案是手动修改 EDMX 文件(作为 XML),但使用默认的 EDMX 设计器,您的更改将在每次从数据库更新后被删除。

于 2011-07-01T11:13:36.150 回答