c# - 当里面没有 DbSet<> 时如何使用 DbContext 进行查询?

标签 c# entity-framework linq ef-code-first

我正在使用 Entity Framework 代码优先,这是我的DbContext。如您所见,没有任何关于 DbSet<> 属性的信息,所有这些属性都将从 C# CodeDOM 提供的我的模型类中提供。我正在使用代码优先动态创建我的

    public class MyDBContext : DbContext
{

    public MyDBContext() : base("MyCon")
    {
        Database.SetInitializer<MyDBContext>(new CreateDatabaseIfNotExists<MyDBContext>());
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        var entityMethod = typeof(DbModelBuilder).GetMethod("Entity");
        var theList = Assembly.GetExecutingAssembly().GetTypes()
                  .Where(t => t.Namespace == "FullDynamicWepApp.Data.Domins")
                  .ToList();
        foreach (var item in theList)
        {
            entityMethod.MakeGenericMethod(item)
                           .Invoke(modelBuilder, new object[] { });
        }
        base.OnModelCreating(modelBuilder);
    }

}

但现在我不知道如何在 DbContext 中编写没有任何 DbSet<>查询 Linq?创建我的 DbContext 实例并使用哪个属性?

 MyDBContext Db = new MyDBContext();
        Db.What???????

在这种情况下我该如何编写我的CRUD操作

最佳答案

DbContext.Set<TEntity> 方法将返回 DbSet<TEntity>对于给定类型,例如:

Db.Set<Entity>().Add(entity);

关于c# - 当里面没有 DbSet<> 时如何使用 DbContext 进行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39817703/

相关文章:

c# - 是否可以指定一个范围为 using 指令的程序集?

c# - ComboBox.MaxDopDownItems 在使用 Click 事件添加项目时不起作用

c# - ToUpper() 方法不起作用

c# - EntityFramework 首先使用数据库检测复杂类型

mysql - MySQL @userVariables 是否可以安全地用于带有 Entity Framework 的存储过程

c# - 使用 linq 删除列表中的重复项

c# - LINQ 中字母数字数据的 SQL Order By 子句未按预期排序

linq - 对LINQ和对象使用不同的对象

c# - 为什么感叹号出现在文字前面

entity-framework - EF 迁移 - 一个数据库,两个项目