相关疑难解决方法(0)

EF LINQ包含多个嵌套实体

好的,我有三层实体,具有以下层次结构:课程 - >模块 - >章节

这是最初的EF LINQ声明:

Course course = db.Courses
                .Include(i => i.Modules.Select(s => s.Chapters))
                .Single(x => x.Id == id); 
Run Code Online (Sandbox Code Playgroud)

现在,我想要包含另一个名为Lab的实体,该实体与课程相关联.

如何包含实验室实体?

我尝试了以下但它不起作用:

Course course = db.Courses
                .Include(i => i.Modules.Select(s => s.Chapters) && i.Lab)
                .Single(x => x.Id == id); 
Run Code Online (Sandbox Code Playgroud)

关于包含第二实体的任何想法?

任何建议或信息都将受到高度赞赏.谢谢!

.net linq entity-framework asp.net-mvc-3 entity-framework-5

148
推荐指数
5
解决办法
16万
查看次数

实体框架 - 有没有办法在没有Include()的情况下自动加载子实体?

有没有办法装饰你的POCO类来自动加载子实体而不必Include()每次加载时都使用它们?

假设我有一辆Class Car,车轮,门,发动机,保险杠,Windows,排气等的复杂类型属性.在我的应用程序中,我需要从我的DbContext 20个不同的地方加载我的汽车,不同的查询,等等.不希望每次我想加载我的汽车时都要指定我想要包含所有属性.

我想说

List<Car> cars = db.Car
                .Where(x => c.Make == "Ford").ToList();

//NOT .Include(x => x.Wheels).Include(x => x.Doors).Include(x => x.Engine).Include(x => x.Bumper).Include(x => x.Windows)


foreach(Car car in cars)
{

//I don't want a null reference here.

String myString = car.**Bumper**.Title;
}
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式装饰我的POCO类或我的OnModelCreating()或在EF中设置一个配置,它会告诉它在我装车时加载我汽车的所有部件吗?我想热切地这样做,所以我的理解是让我的导航属性变得虚拟.我知道NHibernate支持类似的功能.

只是想知道我是否遗漏了什么.提前致谢!

干杯,

弥敦道

我喜欢下面的解决方案,但我想知道我是否可以嵌套对扩展方法的调用.例如,假设我与Engine有类似的情况,它有很多部分,我不希望包含在任何地方.我可以这样做吗?(我还没有找到一种工作方式).这样,如果以后我发现Engine需要FuelInjectors,我只能在BuildEngine中添加它,而不必在BuildCar中添加它.此外,如果我可以嵌套调用,如何将调用嵌套到集合中?想从我的BuildCar()中为每个轮子调用BuildWheel()?

public static IQueryable<Car> BuildCar(this IQueryable<Car> query) {
     return query.Include(x => x.Wheels).BuildWheel()
                 .Include(x => x.Doors)
                 .Include(x => x.Engine).BuildEngine()
                 .Include(x => x.Bumper)
                 .Include(x => x.Windows);
}

public …
Run Code Online (Sandbox Code Playgroud)

entity code-first entity-framework-4.1 entity-framework-4.3

70
推荐指数
3
解决办法
4万
查看次数

如何构造LINQ to Entities查询以直接加载子对象,而不是调用Reference属性或Load()

我是新手使用LINQ to Entities(或实体框架,无论他们调用它),我写了很多这样的代码:

var item = (from InventoryItem item in db.Inventory
            where item.ID == id
            select item).First<InventoryItem>();
Run Code Online (Sandbox Code Playgroud)

然后像这样调用该对象上的方法:

var type = item.ItemTypeReference;
Run Code Online (Sandbox Code Playgroud)

要么

var orders = item.OrderLineItems.Load();
Run Code Online (Sandbox Code Playgroud)

检索子对象或相关对象.

我没有对数据库进行分析或挖得太深,但我的猜测是,当我调用.Load()或*Reference属性时,我实际上正在再次调用数据库.如果是这种情况,有没有办法在我的初始LINQ表达式中获取这些对象?

c# linq linq-to-entities

43
推荐指数
1
解决办法
7万
查看次数

指定的包含路径无效.EntityType不声明名称为*的导航属性

我正在尝试从LocalDb获取数据到我的MVC控制器.我试过这个:

UsersContext db = new UsersContext();
var users = db.UserProfiles.Where(u => u.UserId == WebSecurity.CurrentUserId)
                           .Include(u => u.LastName).ToList();
Run Code Online (Sandbox Code Playgroud)

它返回此错误:

指定的包含路径无效.EntityType"ChatProj.Models.UserProfile"未声明名称为"LastName"的导航属性.

这是我的localDb和模型的图片.

知道为什么它不起作用吗?

c# linq entity-framework

38
推荐指数
4
解决办法
5万
查看次数

在Entity Framework Core中选择多个嵌套级别的子表

我想使用急切加载在Entity Framework Core中获得多个嵌套级别的子表.我不认为延迟加载已经实现.

我找到了EF6 的答案.

var company = context.Companies
                 .Include(co => co.Employees.Select(emp => emp.Employee_Car))
                 .Include(co => co.Employees.Select(emp => emp.Employee_Country))
                 .FirstOrDefault(co => co.companyID == companyID);
Run Code Online (Sandbox Code Playgroud)

我的问题是Select在EF Core中无法识别

错误CS1061"Employees"不包含"Select"的定义,也没有扩展方法"Select"接受类型为"Employees"的第一个参数(您是否缺少using指令或程序集引用?)

我包含的命名空间:

using MyProject.Models;
using Microsoft.Data.Entity;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
Run Code Online (Sandbox Code Playgroud)

Select在EF Core中有什么替代方案.

entity-framework-core

28
推荐指数
2
解决办法
1万
查看次数

在连接表上使用EF Core ThenInclude()

我正在将我的.NET Framework(EF6)代码转移到ASP.NET Core(EF Core),我偶然发现了这个问题.这是一些示例代码:

在EF6中,我使用Include()和Select()进行预加载:

return _context.Post
.Include(p => p.PostAuthor.Select(pa => pa.Author).Select(a => a.Interests))
Run Code Online (Sandbox Code Playgroud)

PostAuthor是一个联结表,还有一个Junction表"AuthorInterest",我不需要参与EF6(Select直接进入a.Interests).

无论如何,我可以看到在EF7中这是重做的,这意味着我现在应该使用ThenInclude()来嵌套查询.然而...

return _context.Post
  .Include(p => p.PostAuthor)
    .ThenInclude(pa => pa.Select(pa2 => pa2.Author))
...etc
Run Code Online (Sandbox Code Playgroud)

由于Select()语句,上面的代码失败了.https://docs.efproject.net/en/latest/querying/related-data.html上的文档似乎表明我不需要它,我可以立即访问作者,但我在最后一个lambda中获得了ICollection显示,所以我显然需要Select().我在查询中进一步查看了多个联结表,但为了简单起见,我们只关注第一个.

我该如何工作?

entity-framework entity-framework-core asp.net-core-mvc asp.net-core

28
推荐指数
1
解决办法
2万
查看次数

entityframework核心 - 多对多 - 属性表达式无效

应用版本:

Asp Net Core 1.1

EF:Microsoft.EntityFrameworkCore(1.1.1)

线:

_dbContext.MyTable1.Include(c => c.MyIntermediateTable).ThenInclude(k => k.Select(x => x.MyTable2)).ToList();

例外:

属性表达式'k => {来自MyIntermediateTable x in k select [x] .MyTable2}'无效.表达式应表示属性访问:'t => t.MyProperty'.有关包含相关数据的更多信息

我的实体

[Table("MyTable1")]
public class MyTable1
{
    public MyTable1()
    {
        MyIntermediateTable = new List<MyIntermediateTable>();
    }

    [Column("MyPK1")]
    public  int MyPK1 { get; set; }
    public  string Name{ get; set; } 

    public virtual List<MyIntermediateTable> MyIntermediateTable{ get; set; }
}

[Table("MyIntermediateTable")]
public class MyIntermediateTable
{

    public int MyPK1 { get; set; }
    public int MyPK2 { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# lambda entity-framework ef-fluent-api asp.net-core

2
推荐指数
1
解决办法
2588
查看次数

实体框架相关表获取和保存数据

我一直在NETSO中寻找一些答案 - 我对实体框架几乎是一个菜鸟..所以我对相关实体确实有一些困惑..我正在使用 C# , Winforms , Linq , EF6^ (生成的反向数据库类在 DAL 项目中)

我很难解决这个问题。我有 3 个表,它们与第四个表相关 - 第 4 个表使用其他 3 个表中的 PK_ID 列 - 配置为外键,它们还组成了复合键(主键)。

我的粗略 ER 图。

ER图

我需要在 EF 查询中做的是获取多个列以将数据绑定绑定到列表视图。

我想要的列是 EnumerationCode、Part.Number、Part.Description。

我将使用 ProdID (我将 Products 绑定到 DropDown )作为这些附加值的 getter。

所以基本上我想到了这一点 Select From TernaryTable T Join EnumID on ENumTable.EnumID where T.ProdID = myProdID order by EnumCode [Join this to Select Part.Number, Part.Description From PartID = TernaryTable.PartID )

我认为可能有一个简单的解决方案来获取这些数据,然后如何保存对数据的任何更改 - 但正如我所说,我迷失了。

我需要两种方法,一种是获取数据,另一种是保存数据发生的任何更改。

我读过这个

使用 Linq …

c# linq entity-framework relationship winforms

0
推荐指数
1
解决办法
2994
查看次数