实体框架 - GetObjectByKey不允许主键

时间:2011-07-01 10:10:19

标签: .net entity-framework entity mapping-model

我正在尝试使用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:提供的键值对列表   包含的条目数不正确。有54个关键领域   在'Namespace.Journal'类型上定义,但提供了1。参数   name:key

Journal是一种观点。

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

提前致谢

1 个答案:

答案 0 :(得分:1)

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