使用DB上下文的Linq怀疑

使用DB上下文的Linq怀疑,linq,entity-framework,entity-framework-4.1,entity-relationship,Linq,Entity Framework,Entity Framework 4.1,Entity Relationship,嗨,我有个问题好几天来一直困扰着我。 我有我的SQL server数据库和我的C应用程序。 在DB中,我有不同的表,让我给你看一个简单的例子 桌子: 人 关系 城市 业务规则: 这个人来自一个城市,所以这个人有一个城市 一个人与另一个人有关系,关于这种关系,您需要保存开始日期 在其他项目中,我已经做过类似的事情,但在这个项目中,这对我来说不起作用 当我用LinQ检索到关于此人的信息时,城市不在,当我尝试person.city.description作为ex时,会出现一个错误。 我尝试在linq查

嗨,我有个问题好几天来一直困扰着我。 我有我的SQL server数据库和我的C应用程序。 在DB中,我有不同的表,让我给你看一个简单的例子 桌子: 人 关系 城市

业务规则: 这个人来自一个城市,所以这个人有一个城市 一个人与另一个人有关系,关于这种关系,您需要保存开始日期

在其他项目中,我已经做过类似的事情,但在这个项目中,这对我来说不起作用

当我用LinQ检索到关于此人的信息时,城市不在,当我尝试person.city.description作为ex时,会出现一个错误。 我尝试在linq查询中使用IncludeCity,但没有成功。除此之外,我不知道如何管理人际关系的循环引用

一件重要的事情,我认为这可能是问题所在,就是我重命名了DataModel中的所有表,例如,数据库中的表名为Prd_City,所以我在c项目中更改了City的名称和实体集名称。因此,在included中,我必须使用真实的表名,在其他情况下,查询失败,但如果使用真实的表名,则不会发生任何事情

using (var context = new MyContext())
{
   List<Person> oPeople = (from p in context.Person.Include("Prd_City")
                           select p).ToList();
   return oPeople ;
}
欢迎任何帮助。
谢谢

它不起作用永远不能很好地描述你的问题。但从你的问题的其余部分,我可以推断此人拥有一个名为Prd_City的导航属性,而你预期它是City。问题是:您重命名了实体,但没有重命名实体中的导航属性

关于它的价值,我的建议是:似乎你的工作数据库是第一位的。如果可以,请更改为先编写代码,然后手动将POCO类映射到它们的表名,并将属性映射到它们的数据库列。根据数据模型的大小,这可能需要大量的工作,但在此之后,您将永远不会面临EF取消重命名实体的风险。此外,DbContext API比ObjectContext更易于使用。目前,它是首选的EF API