【发布时间】:2017-05-04 18:35:37
【问题描述】:
我有一个 Asp.net MVC - C# 项目,想在项目中使用之前使用 LINQPad 测试它的一些 Entity Framework 语句。
项目有不同的类库如
-
DAL(包括
ApplicationDbContext类) - 域类(模型)
A) 我在 LINQPad 中的 DAL 中添加了一个 EF 连接,它加载了所有实体在其窗口的左侧树中成功。 [见下图]
B) 此外,我将 LINQPad 查询 中的一些必需引用添加到以下 DLL:
- DAL dll
- 域类 dll
- Microsoft.AspNet.Identity.Core.dll
- EntityFramework.dll
但是 »
当我右键单击左侧树中的实体并选择每个选项时,它会显示此错误:
当前上下文中不存在名称“[Conceptual_Model_Name]”
为什么? 我该如何解决这个问题?
编辑 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");
这可能与模型的动态加载有关吗?
【问题讨论】:
-
开始你可以切换到LinqPad的最新版本(5)
-
@Steve,好的,我也尝试了 v5,但我在问题中附加了一些新信息(关于动态加载 DBContext 类中的实体)。你有什么想法吗?
-
@Steve,我使用最新版本 (5) 对其进行了测试。结果没有改变。
-
抱歉,不知道这种行为
标签: c# asp.net-mvc entity-framework linqpad