实体框架:将实体分配给另一个实体的属性
题
我有这些实体(这只是我为这篇文章创建的抽象):
- 语言
- 区
- 描述
这些是它们之间的参考:
- 区 * - 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
抛出的错误是:
系统.InvalidOperationException:无法定义关系,因为EntitySet名称'myentities.deScriptions'对secsocial设置名称'myentities.district_description'中的“区域”无效。
我究竟做错了什么?
解决方案
如果 myFetch
是该类的一个实例 District
你可以通过编程来做到这一点:
desc.DistrictReference.EntityKey = new EntityKey(
String.Format(
"{0}.{1}",
myFetch.EntityKey.EntityContainerName,
myFetch.EntityKey.EntitySetName),
"DistrictId",
myFetch.DistrictId);
其他提示
正如消息所说:您指定了错误的实体集名称。
- 打开您的 EDMX。
- 打开模型浏览器窗口。
- 在模型浏览器中查找 District 实体
- 右键单击它,选择“属性”
- 记下正确的实体集名称
不隶属于 StackOverflow