Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Orm 正在寻找一个使用dapper/sproc创建db记录的好例子_Orm_Dapper - Fatal编程技术网

Orm 正在寻找一个使用dapper/sproc创建db记录的好例子

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

你能给我举一个通过存储过程用Dapper创建db记录的好例子吗?理想情况下,我会采用类似于EF的OO方法,如下所示:

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>();
    }
}