如何根据表名称在DbContext中选择正确的DbSet

多宝

说我有一个带有以下DbSet的DbContext

class Amimals : DbContext
{
    public DbSet<Dog> Dogs { get; set; }
    public DbSet<Cat> Cats { get; set; }
}

在每个EntityTypeConfiguration的内部,我正在为每个DbSet定义表,例如

class DogConfig : EntityTypeConfiguration
{
    public DogConfig()
    {
        this.ToTable("DOG_TABLE");
        ...
    }
}

现在,如果我有表名和DbContext,该如何获取和使用正确的DbSet?

void foo()
{
    string tableName = this.GetTableName();
    using(Animals context = new Animals())
    {
        /* Made up solution */
        DbSet animalContext = context.Where(c => c.TableName == tableName);
        ...
        /* Do something with DbSet */
        ...
    }
}
维克多·巴赫捷夫(Viktor Bahtev)

您可以Type使用方法从DbContext获取DbSet DbContext.Set(Type entityType)因此,如果您将模型类名称作为字符串,则应该对实际的clr类型进行一些映射。

例如:

string tableName = "Cat";
var type = Assembly.GetExecutingAssembly()
        .GetTypes()
        .FirstOrDefault(t => t.Name == tableName);

if(type != null)
    DbSet catContext = context.Set(type);

您也可以使用完整程序集合格名称Type.GetType('...')从字符串中获取类型。

如果您可以某种方式以通用方式存储配置并使用通用context.Set<T>()方法,则将更加容易

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从表中选择名称

来自分类Dev

如何根据不同条件从其他表中选择字段

来自分类Dev

如何根据不同的时间范围从多个表中选择数据?

来自分类Dev

如何从MySql表中选择根据最大日期发生的行?

来自分类Dev

如何根据条件从我的表中选择不同的列?

来自分类Dev

POSTGRE如何从层次表中选择父名称

来自分类Dev

SQL如何使用表名称表从表中选择特定字段

来自分类Dev

根据表名称选择查询列名称

来自分类Dev

根据列从表中选择行

来自分类Dev

根据ID从表中选择多行

来自分类Dev

根据条件从表中选择不同的值

来自分类Dev

根据条件从不同的表中选择

来自分类Dev

从表中选择列名称和值

来自分类Dev

从名称为%O%的表中选择*

来自分类Dev

Ruby没有从正确的表中选择

来自分类Dev

在SQLite表中选择正确的Foregin键

来自分类Dev

如何从表中选择行?

来自分类Dev

如何从嵌套表中选择

来自分类Dev

从具有动态名称或多个名称的表中选择

来自分类Dev

使用R,如何根据要选择的列名称的一列从不同列中选择值?

来自分类Dev

如何根据逻辑在Excel中选择行?

来自分类Dev

如何根据父表中的值从子表中选择项目?

来自分类Dev

如何根据记录存在从 2 个表中选择 1 个记录?

来自分类Dev

如何根据sql server中行的列值从表中选择行

来自分类Dev

如何根据其他表中的其他关系从 1 列中选择 2 个数据

来自分类Dev

如何从连接表中选择最大表?

来自分类Dev

如果校园名称包含“'Indiana”字样,我如何从校园表中选择所有记录?

来自分类Dev

如何从python 2.7的列表中选择名称

来自分类Dev

根据表2从表1中选择记录

Related 相关文章

热门标签

归档