Linq怀疑DB上下文

时间:2012-10-20 18:47:30

标签: linq entity-framework entity-framework-4.1 entity-relationship

嗨,我有一个问题让我的思绪激动了几天。 我有我的SQL服务器数据库和我的C#应用​​程序。 在DB我有不同的表,让我给你一个简单的前 表: 人 关系 城市

业务规则: 这个人来自一个城市,所以这个人有IdCity 一个人与其他人有关系,关于你需要保存开始日期的关系。

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

当我使用LinQ检索有关此人的信息时,该城市未来,并且当我尝试“person.city.description”时出现错误,例如。 我尝试在linq查询中使用Include(“City”),但它不起作用。除此之外,我不知道如何管理人与人之间关系的循环引用。

一个重要的事情,我认为可能是问题,是我从DataModel重命名所有表,例如,数据库中的表称为Prd_City,所以我更改城市的名称和实体集名称在c#项目中。所以在包含的我必须使用真实的表名,在其他情况下查询失败,但如果我使用真实姓名没有任何反应。

using (var context = new MyContext())
{
   List<Person> oPeople = (from p in context.Person.Include("Prd_City")
                           select p).ToList();
   return oPeople ;
}

欢迎任何帮助。 谢谢!

1 个答案:

答案 0 :(得分:0)

“它没有用”从来不是对你的问题的一个很好的描述。但是从你的其余问题我可以推断出Person有一个名为“Prd_City”的导航属性,而你期望它是“城市”。问题是:您重命名了实体,但没有重命名实体中的导航属性。

我的建议(对于它的价值):似乎你的工作数据库首先。如果可以,请更改为代码优先并手动将POCO类映射到其表名,并将属性映射到其数据库列。这可能是相当多的工作(取决于您的数据模型的大小),但在此之后您将永远不会冒EF“取消重命名”您的实体的风险。此外,DbContext API比ObjectContext更容易使用。目前,它是首选的EF API。