【发布时间】:2023-03-11 08:50:01
【问题描述】:
我有两个 1:n 关系的 sql 数据库表。对于我的 ASP.NET MVC 解决方案,我启用了 EF-code-first-migration 并建立了正确的 DBContext 和类。
我想编写一个 MVC 控制器来连接两个表,以便选择特定记录以在视图中显示。
这是两个类:
public class Tbl_Group_Communities : Entity
{
public string GKZ { get; set; }
public int G_ID { get; set; }
}
public class Katastralgemeinden : Entity
{
public string KGNr { get; set; }
public string KGName { get; set; }
public string GKZ { get; set; }
public string GemeindeName { get; set; }
}
到目前为止,我已经能够自己为表格提出一个工作控制器,但没有加入。在第一类的工作控制器下方:
public IEnumerable<Tbl_Group_Communities> Get()
{
var entities = UnitOfWork.GetAll<Tbl_Group_Communities>().ToList();
return entities;
}
我认为,可以使用 Linq 完成连接,但我不知道如何/从哪里开始。 两个表的共同键是 GKZ;所以应该通过 GKZ 建立连接。然后我需要从 G_ID = 某个值的连接记录中选择特定记录。
如果有人能给我一些帮助,我将非常感激。 手动
【问题讨论】:
-
我相信有人可以告诉你如何进行连接,但我建议你研究一下如何配置code first relationships。如果您使用导航属性设置正确的模型,则非常简单。我建议查看 ViewModel。
-
您的意思是您找不到任何有关如何编写
Join语句的文档?除此之外,尚不清楚UnitOfWork可以产生什么。是否也提供Katastralgemeinden?如果是这样,GetAll会返回什么?如果是IEnumerable,加入根本就没有效率。 -
我可以找到文档,但由于我对 C# 和 MVC 控制器非常陌生,因此文档比帮助更令人困惑。 UnitOfWork 也提供 Katastralgemeinden。我认为 GetAll 确实返回了所有记录,这只是检查控制器是否工作的一个表。什么比 IEnumerable 更有效?
-
如果你连接两个
IEnumerables,两个表的数据将被两个查询(可能返回大量数据)提取到内存中,然后连接到内存中。当您连接两个IQueryable(来自同一上下文)时,连接将被转换为一个高效的 SQL 查询。
标签: c# sql-server entity-framework linq