【发布时间】:2012-08-17 03:45:07
【问题描述】:
我有一个包含多个外键关系的单一位置表。它具有状态表、城市表、国家表和用户表的外键。现在我在 Entity 框架中正确映射了表模型,但是如果我尝试访问 Location 表中的外键 id 字段以添加新的外键映射,我无法访问它,而是得到一个 Reference 字段,例如 状态参考。
现在我发现一些文章说,只需使用 entitykey.StateReference。我试过了,它可以工作,但对我来说似乎很笨拙。我注意到的是,它还为我提供了一个字段 State 而不是 StateID。因此,据此我假设一个人只能将状态名称传递给 Location 对象,而实体框架几乎会自动计算出这种关系。我无法在任何地方找到或找出正确的语法。
如果我在这里离基地很远,有人可以指出正确的方向并纠正我吗?我已经为此苦苦挣扎了一段时间,似乎无法理解。或者,如果我说的是正确的,有人可以给我一些基本代码来显示语法。我正在 VS2010 中制作 Web 服务,所以如果我理解正确,我将使用 ef v1。下面是我的位置对象的代码。
using(Entities context = new Entities())
{
Location NewLocation = new Location
{
//In SQL all three of these field are acutally foreign key ids I am
trying to maintian
State = context.States.Where(i => i.State1.Equals(AddedState)),
Country = context.Countries.Where(i => i.State1.Equals(AddedCountry)),
City = context.Cities.Where(i => i.City1.Equals(AddedCity)),
}
};
context.AddToLocation(NewLocation);
context.SaveChanges();
}
【问题讨论】:
-
您需要在 SO 上阅读一些关于编辑器的信息(单击帮助,然后在问题编辑器中单击高级帮助)。不要在段落中使用前导空格,这会将它们变成代码块。我对其进行了编辑,但我的编辑需要一些时间才能通过审批流程。根据您的问题,我知道在 EF 4.x 中我能够设置一个选项,告诉它映射外键以及创建引用。我认为此选项在以前的版本中不可用,因此您还可以指定您正在使用的 EF 版本。
标签: c# entity-framework foreign-keys foreign-key-relationship