所以你必须直接使用ADO.NET,对吗?
这是一个示例回购:
public class UserRepository : Repository<User>
{
public UserRepository(AdoNetContext context) : base(context)
{
}
public void Create(User user)
{
using (var command = _connection.CreateCommand())
{
command.CommandText = @"INSERT INTO Users (CompanyId, FirstName) VALUES(@companyId, @firstName)";
command.AddParameter("companyId", user.CompanyId);
command.AddParameter("firstName", user.FirstName);
command.ExecuteNonQuery();
}
//todo: Get identity. Depends on the db engine.
}
public void Update(User user)
{
using (var command = _connection.CreateCommand())
{
command.CommandText = @"UPDATE Users SET CompanyId = @companyId WHERE Id = @userId";
command.AddParameter("companyId", user.CompanyId);
command.AddParameter("userId", user.Id);
command.ExecuteNonQuery();
}
}
public void Delete(int id)
{
using (var command = _connection.CreateCommand())
{
command.CommandText = @"DELETE FROM Users WHERE Id = @userId";
command.AddParameter("userId", id);
command.ExecuteNonQuery();
}
}
public IEnumerable<User> FindUsers(string firstName)
{
using (var command = _connection.CreateCommand())
{
command.CommandText = @"SELECT * FROM Users WHERE CompanyId = @companyId AND FirstName LIKE @firstName";
command.AddParameter("companyId", LoggedInUser.companyId);
command.AddParameter("firstName", firstName + "%");
return ToList(command);
}
}
public IEnumerable<User> FindBlocked()
{
using (var command = _connection.CreateCommand())
{
command.CommandText = @"SELECT * FROM Users WHERE Status = -1";
return ToList(command);
}
}
protected void Fill(IDataRecord record, User user)
{
user.FirstName = (string)record["FirstName"];
user.Age = (int)record["Age"];
}
}
它来自我的ADO.NET,正确的方式文章。