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);
我有一些模型只有两个字段: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);