【问题标题】:Linq doubts with DB contextLinq 对 DB 上下文的怀疑
【发布时间】:2012-10-20 18:47:29
【问题描述】:

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

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

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

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

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

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

欢迎任何帮助。 谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多