我正在研究一个MVC项目。其中我有许多表格,例如Location
,Department
,Skills
,Stream
,CurrentRole
等。
我想对这些表执行CRUD操作。
我所做的是我已经编写了一些方法来对Location
表执行操作。有4种方法如下。
添加位置:
public ActionResult AddLocation(tblCurrentLocation location)
{
//Logic to add location to the database.
}
修改位置:
public ActionResult EditLocation(string id)
{
//Logic to display Edit form...
}
保存已编辑的数据:
[HttpPost]
public ActionResult SaveLocation(tblCurrentLocation tblCurrentLocation)
{
//Logic to update the data in database.
//This is POST method which will get called when user clicks
//save after editing the data.
}
这是从数据库中删除条目
public ActionResult DeleteLocation(int id)
{
//Logic to delete row from database.
}
如果我遵循这种方法并为所有(约16个)表写下方法,那么我的控制器中将有50多种方法难以维护。
我正在寻找的是我会编写通用的CRUD方法,它们可以接受我所有表的数据并执行操作。
正在编写通用方法解决方案吗?如果是,那我该如何实现呢?
有没有其他方法可以实现这个目标?
请帮助..
谢谢:)
答案 0 :(得分:1)
由于您正在进行基本的CRUD操作,我建议您查看Repository pattern。 使用Repository模式的Generic接口示例:
<强> IRepository 强>
public interface IRepository<T> where T : IEntity
{
IEnumerable<T> List { get; }
void Add(T entity);
void Delete(T entity);
void Update(T entity);
T FindById(int id);
}
<强> IEntity 强>
public class IEntity
{
public int Id {get;set;}
}
示例实施
public class MyRepo : IRepository<MyClass> // MyClass needs to implement IEntity
{
private readonly DBContext _context;
public MyRepo(DBContext context)
{
_context = context;
}
public List<MyClass> List()
{
return _context.Table.ToList();
}
// Other implementations of the IRepository interface
}
请注意,在我的示例中,我使用的是Entity Framework
以下是使用Entity Framework实现Repository模式的有用指南:http://www.codeproject.com/Articles/688929/Repository-Pattern-and-Unit-of