从EF加入联系

本文关键字:联系 EF | 更新日期: 2023-09-27 18:03:11

我有以下问题EF和linq2sql使用两个表

Table1:

Id | Name
1  | Name1
2  | Name2
表2:

Id | Table1Id | Name
1  | 1        | SomeText1
2  | 1        | SomeText2
3  | 2        | SomeText3

我想创建一个linq2sql查询获取一个结果集与模板为

Table1Id:contact(Table2.Name+";")
例如

1:SomeText1;SomeText2
2:SomeText3

从EF加入联系

今天早上有几分钟空闲时间,所以请查看下面的示例实现。除了为实现所需而指定的表之外,还需要在两个表之间添加关联(多对多)。这将在连接表上运行,并为两个实体添加导航属性。

下面的查询实际上是在说,选择出表1项,并包含来自Table2导航属性的相关记录。对于这个例子,我在上下文中关闭了Lazy Loading(你几乎应该一直这样做,因为它会导致跨层和/或在应用程序中序列化时出现问题)。

        // db first
        using (var db = new SO15312066Entities())
        {
            // iterate over table 1, with join values from 2
            var query = db.Table1.Include("Table2");
            foreach (var item in query)
            {
                Console.WriteLine("{0}:{1}", item.Id, string.Join(";", item.Table2.Select(x => x.Name).ToList()));
            }
        }
        //output
        //1:SomeText1;SomeText2
        //2:SomeText3

这个实现的假设是它首先是EF数据库(正如你最初说你在EF中遇到问题)。SO15312066Entities是查询的ObjectContext。

我还没有检查这将如何执行,我将留给你在你的实际实现。