更好的做法是在数据访问层中移动所有数据访问代码。因此,只需将此代码放在一个单独的类中,您就可以从控制器中引用和调用。例如,您可以定义一个接口来定义不同的操作:
public interface IRepository
{
void Insert(SignUpModel model);
}
然后有一个与您正在使用的数据访问技术一起使用的特定实现(例如 EF):
public class RepositoryEF : IRepository
{
public void Insert(SignUpModel model)
{
using(DataClassesDataContext dc= new DataClassesDataContext())
{
Dummytable dm = new Dummytable();
dm.Name = sm.password;
}
}
}
下一步是让您的控制器将此存储库作为构造函数依赖项:
public class SomeController : Controller
{
private readonly IRepository repo;
public SomeController(IRepository repo)
{
this.repo = repo;
}
[HttpPost]
public ActionResult Index(SignUpModel sm)
{
this.repo.Insert(sm);
...
}
}
现在剩下的就是拿起一些 DI 框架并连接依赖项。
这样,您的控制器逻辑和数据访问层之间就有了清晰的分离。这将允许您单独对应用程序的各个层进行单元测试。