实体框架:将实体分配给另一个实体的属性

发布于 2024-08-06 01:20:01 字数 1031 浏览 9 评论 0原文

我有这些实体(这只是我为这篇文章创建的抽象):

  • 语言
  • 地区
  • 描述

这些是它们之间的引用:

  • >地区 * - 1 语言
  • 描述 * - 1 语言
  • 地区 1 - 1 描述

如果我像这样获取:

var myFetch = from c in context.Districts
              where c.Id = 10
              select new { DistrictId = c.Id, Lang = c.Language };

然后,我尝试将其分配给描述,如下所示:

Description desc = Description.CreateDescription(0, "My description");
desc.DistrictReference.EntityKey = new EntityKey("MyEntities.Descriptions", "DistrictId", myFetch.DistrictId);
desc.Language = myFetch.Lang; //throws error

抛出的错误是:

System.InvalidOperationException: 无法定义关系,因为 实体集名称 'MyEntities.Descriptions' 是 对于“地区”角色无效 在关联集名称中 “MyEntities.District_Description”。

我做错了什么?

I have these entities (this is just an abstraction I created for this post):

  • Language
  • District
  • Description

These are the references between them:

  • District * - 1 Language
  • Description * - 1 Language
  • District 1 - 1 Description

If I fetch like this:

var myFetch = from c in context.Districts
              where c.Id = 10
              select new { DistrictId = c.Id, Lang = c.Language };

and after that, I try to assign it to Description like this:

Description desc = Description.CreateDescription(0, "My description");
desc.DistrictReference.EntityKey = new EntityKey("MyEntities.Descriptions", "DistrictId", myFetch.DistrictId);
desc.Language = myFetch.Lang; //throws error

The error thrown is:

System.InvalidOperationException: The
relationship cannot be defined because
the EntitySet name
'MyEntities.Descriptions' is
not valid for the role 'District'
in association set name
'MyEntities.District_Description'.

What am I doing wrong?

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

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

发布评论

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

评论(2

峩卟喜欢 2024-08-13 01:20:01

正如消息所说:您指定了错误的实体集名称。

  1. 打开您的 EDMX。
  2. 打开模型浏览器窗口。
  3. 在模型浏览器中找到 District 实体,
  4. 右键单击它,选择“属性”,
  5. 记下正确的实体集名称

Just what the message says: You specified the wrong entity set name.

  1. Open your EDMX.
  2. Open the Model Browser window.
  3. Find the District entity in the Model Browser
  4. Right click it, choose "Properties"
  5. Note the correct Entity Set name
舂唻埖巳落 2024-08-13 01:20:01

如果 myFetch 是类 District 的实例,您可以通过编程方式执行此操作:

desc.DistrictReference.EntityKey = new EntityKey(  
  String.Format(  
    "{0}.{1}",   
    myFetch.EntityKey.EntityContainerName,   
    myFetch.EntityKey.EntitySetName),   
  "DistrictId", 
  myFetch.DistrictId);  

if myFetch were to be an instance of the class District you could do it programmatically:

desc.DistrictReference.EntityKey = new EntityKey(  
  String.Format(  
    "{0}.{1}",   
    myFetch.EntityKey.EntityContainerName,   
    myFetch.EntityKey.EntitySetName),   
  "DistrictId", 
  myFetch.DistrictId);  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文