gpt4 book ai didi

c# - 为什么LinqPad返回 The name 'ModelName' does not exist in the current context 错误?

转载 作者:行者123 更新时间:2023-11-30 23:13:03 25 4
gpt4 key购买 nike

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

项目有不同的类库如

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

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

enter image description here

B) 此外,我还从 LINQPad Query 添加了一些必需的引用到以下 DLL:

  • DAL 动态链接库
  • 领域类dll
  • Microsoft.AspNet.Identity.Core.dll
  • EntityFramework.dll

但是»

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

The name '[Conceptual_Model_Name]' does not exist in the current context

为什么?我该如何解决这个问题?


编辑 1:

ApplicationDbContext 类的 OnModelCreating 方法中,我调用以下方法来将实体添加到 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");

是否可能与动态加载模型有关?

最佳答案

我自己解决了!

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

// Add this property to the ApplicationDbContext class

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

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

关于c# - 为什么LinqPad返回 The name 'ModelName' does not exist in the current context 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43778203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com