2

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

  • 语言
  • 描述

这些是它们之间的引用:

  • 地区 * - 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:无法定义关系,因为 EntitySet 名称“MyEntities.Descriptions”对于关联集名称“MyEntities.District_Description”中的角色“District”无效。

我究竟做错了什么?

4

2 回答 2

2

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

  1. 打开您的 EDMX。
  2. 打开模型浏览器窗口。
  3. 在模型浏览器中查找 District 实体
  4. 右键单击它,选择“属性”
  5. 注意正确的实体集名称
于 2009-09-30T16:13:20.847 回答
1

如果myFetch要成为该类的实例,District您可以以编程方式进行:

desc.DistrictReference.EntityKey = new EntityKey(  
  String.Format(  
    "{0}.{1}",   
    myFetch.EntityKey.EntityContainerName,   
    myFetch.EntityKey.EntitySetName),   
  "DistrictId", 
  myFetch.DistrictId);  
于 2010-06-02T13:29:25.860 回答