实体框架 - GetObjectByKey 不允许主键

发布于 2024-11-18 04:32:02 字数 768 浏览 3 评论 0原文

我正在尝试使用 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 个。范围 名称:密钥

类型 Journal 是一个视图。

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

提前致谢

I'm trying to get a record using GetObjectByKey function like this:

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);

But i get this exception

System.ArgumentException: The provided list of key-value pairs
contains an incorrect number of entries. There are 54 key fields
defined on type 'Namespace.Journal', but 1 were provided. Parameter
name: key

The type Journal is a view.

How can i do to use that function with just one field, the reason why i need that is because i don't want to specify a generic type , just one to get it from the given entity set name.

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谁许谁一生繁华 2024-11-25 04:32:03

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

View in database doesn't have a key but EF needs it so when you insert the view to the model EF will take all non-nullable, non-binary columns and defines them as a key - at the moment your key consists of 54 columns. The solution is manually modifying EDMX file (as XML) but with default EDMX designer your changes will be deleted after each update from database.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文