1

嗨,我有一个问题困扰了我好几天。我有我的 SQL 服务器数据库和我的 C# 应用程序。在数据库中,我有不同的表,让我向您展示一个简单的前表:人际关系城市

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

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

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

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

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

欢迎任何帮助。谢谢!

4

1 回答 1

0

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

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

于 2012-10-21T17:02:59.870 回答