小编hel*_*rve的帖子

在测试运行时找不到 EF Core 扩展 .Include()

以前,我们的工作单元实现从上下文中提供了简单的结果,例如

    public User Get(int id)
    {
        return Context.Users
            .Single(u => u.Id == id);
    }
Run Code Online (Sandbox Code Playgroud)

昨天,我按照以下方式向上下文添加了关系:

            modelBuilder.Entity<UserRole>()
            .HasOne(ur => ur.User)
            .WithMany(u => u.UserRoles)
            .HasForeignKey(ur => ur.UserId);
Run Code Online (Sandbox Code Playgroud)

然后还将这些导航属性包含在 UoW 中,例如:

    public override User Get(int id)
    {
        return Context.Users
            .Include(u => u.UserRoles)
            .Single(u => u.Id == id);
    }
Run Code Online (Sandbox Code Playgroud)

结果是,现在单元测试失败,并显示以下内容:

类型“Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions”上没有与指定参数匹配的方法“Include”

堆栈跟踪:

在System.Linq.EnumerableRewriter.FindMethod(类型类型,字符串名称,ReadOnlyCollection'1 args,Type [] typeArgs)在System.Linq.EnumerableRewriter.VisitMethodCall(MethodCallExpression m)在System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor访问者) )在System.Linq.Expressions.ExpressionVisitor.Visit(表达式节点)在System.Linq.Expressions.ExpressionVisitor.Visit(ReadOnlyCollection`1节点)在System.Linq.EnumerableRewriter.VisitMethodCall(MethodCallExpression m)在System.Linq.Expressions。 MethodCallExpression.Accept(ExpressionVisitor 访问者)位于 System.Linq.Expressions.ExpressionVisitor.Visit(表达式节点)位于 System.Linq.EnumerableQuery'1.GetEnumerator() 位于 System.Linq.EnumerableQuery'1.System.Collections.Generic.IEnumerable。 GetEnumerator() 在 System.Collections.Generic.List'1..ctor(IEnumerable'1 集合) 在 System.Linq.Enumerable.ToList[TSource](IEnumerable'1 源) 在 RetroNinja.Dal.Ef.Tests.ProjectSprintUowTests。 D:\Projects\Global Kinetic\RetroNinja\test\RetroNinja.Dal.Ef.Tests\ProjectSprintUowTests.cs 中的 ProjectSprint_GetUsers_HasUsers():第 81 行

仅当执行测试时(在 VS 或 cmd …

entity-framework xunit .net-core

5
推荐指数
0
解决办法
370
查看次数

标签 统计

.net-core ×1

entity-framework ×1

xunit ×1