ASP.NET 数据库字典的通用控制器(使用 Entity Framework)

ASP.NET universal controller for database dictionaries (using Entity Framework)

我有一些模型只有两个字段:Id 和 Name。所有这些模型都继承自 IDbDictionary 接口。

我的目标是为该模型的 CRUD 操作制作 "universal" 控制器。我的问题是如何(使用 EF)按名称修改数据库 table。例如,有方法

    [HttpPost]
    public ActionResult Create(IDbDictionary newRecord, string collectionName)
    {
        if (ModelState.IsValid)
        {
            db.<collectionName>.Add(newRecord);
            db.SaveChanges();
            return View("Success");
        }

        return View("Create", newRecord);
    }

有没有办法按照我描述的那样做?我想过反思,但我不知道该怎么做。

此致,
C

通常您会有一个 Service 来处理您可以从所有方法调用的通用数据库操作。示例:

public class DataService
{
    public readonly ApplicationDbContext dbContext;

    public DataService(ApplicationDbContext dbContext)
    {
        this.dbContext = dbContext;
    }

    public void Create<TEntity>(TEntity entity) where TEntity : IDbDictionary 
    {
        this.dbContext.Set<TEntity>().Add(entity);
        this.dbContext.SaveChanges();
    }
}

那么在你的方法中你会使用:

var dataService = new DataService(this.dbContext);
dataService.Create<ClassName>(newEntity);