【发布时间】:2017-07-23 11:25:02
【问题描述】:
我曾经使用 Repository、UnitOfWork 和 Dependency Injection 实现 EF。
我现在尝试使用 Repository、UnitOfWork 和依赖注入来实现 ADO.NET。- 但它会导致问题
这是我的存储库界面:
public interface IUsersRepository
{
public User GetUser(int id);
}
这里存储库实现:
public class UsersRepository: IUsersRepository
{
private readonly string _connectionString;
public UsersRepository(string connectionString)
{
_connectionString = connectionString;
}
public User GetUser(int id)
{
// Here you are free to do whatever data access code you like
// You can invoke direct SQL queries, stored procedures, whatever
using (var conn = new SqlConnection(_connectionString))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT id, name FROM users WHERE id = @id";
cmd.Parameters.AddWithValue("@id", id);
using (var reader = cmd.ExecuteReader())
{
if (!reader.Read())
{
return null;
}
return new User
{
Id = reader.GetInt32(reader.GetOrdinal("id")),
Name = reader.GetString(reader.GetOrdinal("name")),
}
}
}
}
}
有没有办法为 ADO.NET 创建一个“通用存储库”(如何实现它?)?
这里是控制器:
public class UsersController: Controller
{
private readonly IUsersRepository _repository;
public UsersController(IUsersRepository repository)
{
_repository = repository;
}
public ActionResult Index(int id)
{
var model = _repository.GetUser(id);
return View(model);
}
}
使用ADO.NET时如何制作Unitofwok? (这样做有意义吗?)
【问题讨论】:
-
在不回答的情况下进行标记是不公平的。
-
我的标记。
-
AFAIK,Unitofwork 意味着有一些任务在内存中进行更改,然后将这些更改应用到数据库,所以这是在 EF 创建它时通过 ADO 重新创建 Unitofwork!还有here is a good reference to Unitofwork Design Pattern.
标签: c# asp.net-mvc spring-mvc asp.net-mvc-4 model-view-controller