为什么LinqPad返回当前上下文错误中不存在名称'ModelName'?

时间:2017-05-04 08:55:04

标签: c# asp.net-mvc entity-framework linqpad

我有一个 Asp.net MVC - C#项目,并希望在项目中使用它之前使用 LINQPad 来测试它的一些Entity Framework语句。

项目有不同的类库,如

  • DAL (包括ApplicationDbContext类)
  • 域类(模型)

A)我在 LINQPad DAL 中添加了 EF连接,并加载了所有实体在其窗口的左侧树中成功。 [见下图]

enter image description here

B)我还将 LINQPad Query 中的一些必需参考添加到以下DLL中:

  • DAL dll
  • 域类dll
  • Microsoft.AspNet.Identity.Core.dll
  • EntityFramework.dll

但是»

当我右键单击左侧树中的实体并选择每个选项时,它会显示以下错误:

  

当前上下文中不存在名称“[Conceptual_Model_Name]”

为什么吗 如何解决此问题?

修改1:

OnModelCreating类的 ApplicationDbContext 方法中,我调用以下方法动态地向DbContext添加实体

    public void LoadEntities(Assembly asm, DbModelBuilder modelBuilder, string nameSpace)
    {
        var entityTypes = asm.GetTypes()
            .Where(type => type.BaseType != null &&
                           type.Namespace == nameSpace &&
                           type.BaseType == null)
            .ToList();

        var entityMethod = typeof(DbModelBuilder).GetMethod("Entity");
        entityTypes.ForEach(type => entityMethod.MakeGenericMethod(type).Invoke(modelBuilder, new object[] { }));
    }

我用这行代码调用它:

LoadEntities(typeof(AppUser).GetTypeInfo().Assembly, modelBuilder, "DomainClasses.Entities");

原因是否可能与模型的动态加载相关?

1 个答案:

答案 0 :(得分:1)

我自己解决了!

我在这个问题上写的关于它的怀疑是正确的。正如我在问题中所写,我将实体添加到DbContext作为动态,但现在我将其更改为静态方式,如下所示:

// Add this property to the ApplicationDbContext class

public virtual DbSet<Consumption> Consumptions { get; set; }

现在当我在Consumptions中使用LINQPad属性时,它可以正常工作......