我有一个 Asp.net MVC - C#项目,并希望在项目中使用它之前使用 LINQPad 来测试它的一些Entity Framework语句。
项目有不同的类库,如
ApplicationDbContext
类)A)我在 LINQPad 的 DAL 中添加了 EF连接,并加载了所有实体在其窗口的左侧树中成功。 [见下图]
B)我还将 LINQPad Query 中的一些必需参考添加到以下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");
原因是否可能与模型的动态加载相关?
答案 0 :(得分:1)
我自己解决了!
我在这个问题上写的关于它的怀疑是正确的。正如我在问题中所写,我将实体添加到DbContext
作为动态,但现在我将其更改为静态方式,如下所示:
// Add this property to the ApplicationDbContext class
public virtual DbSet<Consumption> Consumptions { get; set; }
现在当我在Consumptions
中使用LINQPad
属性时,它可以正常工作......