Orm 正在寻找一个使用dapper/sproc创建db记录的好例子
你能给我举一个通过存储过程用Dapper创建db记录的好例子吗?理想情况下,我会采用类似于EF的OO方法,如下所示:Orm 正在寻找一个使用dapper/sproc创建db记录的好例子,orm,dapper,Orm,Dapper,你能给我举一个通过存储过程用Dapper创建db记录的好例子吗?理想情况下,我会采用类似于EF的OO方法,如下所示: var user = new User{ FirstName="John", LastName="Smith"} var userId = dapper.Create(User); return userId; 当然,如果dapper推荐一种不同的方法,我愿意使用dapper中的“正确”方法,假设您有一个存储过程将记录添加到用户表中,如 CREATE PROCEDURE Sav
var user = new User{ FirstName="John", LastName="Smith"}
var userId = dapper.Create(User);
return userId;
当然,如果dapper推荐一种不同的方法,我愿意使用dapper中的“正确”方法,假设您有一个存储过程将记录添加到用户表中,如
CREATE PROCEDURE SaveUser(@firstName VARCHAR(10),@lastName VARCHAR(10))
AS
BEGIN
INSERT INTO [User] (FirstName,LastName) VALUES (@firstName ,@lastName);
SELECT SCOPE_IDENTITY()
END
假设用户表的Id列(PK)设置为Identity。
现在,您可以像这样执行存储过程
var conStr="Replace your connection string here";
using (var con = new SqlConnection(conStr))
{
var userId = con.Query<int>("SaveUser",
new {@firstName = "John", @lastName = "Smith"},
commandType: CommandType.StoredProcedure
).First();
}
只需传递此对象
var conStr="Replace your connection string here";
var u = new UserDto { FirstName = "Johny", LastName= "Depp" };
using (var con = new SqlConnection(conStr))
{
var userId = con.Query<int>("SaveUser", u, commandType: CommandType.StoredProcedure)
.First();
}
var conStr=“在此处替换您的连接字符串”;
var u=newuserdto{FirstName=“Johny”,LastName=“Depp”};
使用(var con=new SqlConnection(contr))
{
var userId=con.Query(“SaveUser”,u,commandType:commandType.storedProcess)
.First();
}
假设您有一个存储过程向用户表中添加记录,如
CREATE PROCEDURE SaveUser(@firstName VARCHAR(10),@lastName VARCHAR(10))
AS
BEGIN
INSERT INTO [User] (FirstName,LastName) VALUES (@firstName ,@lastName);
SELECT SCOPE_IDENTITY()
END
假设用户表的Id列(PK)设置为Identity。
现在,您可以像这样执行存储过程
var conStr="Replace your connection string here";
using (var con = new SqlConnection(conStr))
{
var userId = con.Query<int>("SaveUser",
new {@firstName = "John", @lastName = "Smith"},
commandType: CommandType.StoredProcedure
).First();
}
只需传递此对象
var conStr="Replace your connection string here";
var u = new UserDto { FirstName = "Johny", LastName= "Depp" };
using (var con = new SqlConnection(conStr))
{
var userId = con.Query<int>("SaveUser", u, commandType: CommandType.StoredProcedure)
.First();
}
var conStr=“在此处替换您的连接字符串”;
var u=newuserdto{FirstName=“Johny”,LastName=“Depp”};
使用(var con=new SqlConnection(contr))
{
var userId=con.Query(“SaveUser”,u,commandType:commandType.storedProcess)
.First();
}
您可能还想看看(构建在Dapper之上),这将允许您执行类似的操作
// instance of user created somewhere & procedure called
// on repository method.
var user = new User { FirstName = "John", LastName = "Smith" };
_commander.Execute(user) ? user : null;
假设您正在使用某种类型的存储库类。我已经自由地充实了更多的代码,添加了一些构造函数注入
public class UserRepository : IUserRepository
{
// the IDbCommander is a Drapper construct
private readonly IDbCommander _commander;
public UserRepository(IDbCommander commander)
{
_commander = commander;
}
public User Create(User user)
{
// execute your procedure here (looked up in config)
return _commander.Execute(user) ? user : null;
}
public IEnumerable<User> RetrieveAll()
{
return _commander.Query<User>();
}
}
您可能还想看看(构建在Dapper之上),这将允许您执行类似的操作
// instance of user created somewhere & procedure called
// on repository method.
var user = new User { FirstName = "John", LastName = "Smith" };
_commander.Execute(user) ? user : null;
假设您正在使用某种类型的存储库类。我已经自由地充实了更多的代码,添加了一些构造函数注入
public class UserRepository : IUserRepository
{
// the IDbCommander is a Drapper construct
private readonly IDbCommander _commander;
public UserRepository(IDbCommander commander)
{
_commander = commander;
}
public User Create(User user)
{
// execute your procedure here (looked up in config)
return _commander.Execute(user) ? user : null;
}
public IEnumerable<User> RetrieveAll()
{
return _commander.Query<User>();
}
}