Dapper의 매개 변수화 된 업데이트 및 삽입?

c# dapper sql

문제

내 Windows C # 양식 응용 프로그램에 대해 Dapper를 사용하고 있습니다. CRUD 작업의 대부분이 클래스 이름을 매개 변수로 사용한다는 사실을 알게되었습니다. 예를 들어 다음과 같은 두 개의 테이블 :

    "Employee" Table
        Column Name  | Data Type |
        -------------------------
        EmpName      | string    |
        EmpNo        | string    |
        --------------------------

Employee.cs
[Table("Employee")]
public class Employee
{
   [Key]
   public string EmpNo {get;set;}
   public string EmpName {get;set;}
}

    "User" Table
        Column Name   | Data Type |
        -------------------------
        UserName      | string    |
        UserNo        | string    |
        --------------------------
User.cs
[Table("User")]
public class User
{
   [Key]
   public string UserNo {get;set;}
   public string UserName {get;set;}
}


    eg. var users= connection.Query<User>("select * from User" );
        var employees = connnection.GetList<Employee>();

적절한 작업을 수행 할 것입니다. 하지만, 내 지식 connection.Insert<User>(user); or connection.Update<Employee>(emp); 당. connection.Insert<User>(user); or connection.Update<Employee>(emp); 존재하지 않는다. 제가 틀렸다면 저를 바로 잡으십시오. 업데이트와 삽입을해야 할 일이 있습니까? 나는 Query()Execute() 에 대해 잘 알고있다. 사실 나는 지금 당장이를 사용하고있다. GetList(ClassName); 처럼 쉽게 만들 수 있습니까? 뭐야?

수락 된 답변

Marc Gravell에게 감사드립니다. 나는 그것을 여기 에서 발견했다. Dapper의 오픈 소스 개발에는 Insert<ClassName>(obj)Update<ClassName>(obj) 있습니다.


인기 답변

Dapper는 당신이 요구하는 것과는 조금 다르게 처리합니다. 삽입 또는 업데이트 방법이 없습니다. 대신 Insert의 경우 이렇게 할 수 있습니다.

var p = new Product { Name = "Sam", Description = "Developer" };
p.Id = cnn.Query<int>(@"insert Products(Name,Description) 
values (@Name,@Description) 
select cast(scope_identity() as int)", p).First();

이것은 Sam Saffron ( https://samsaffron.com/archive/2012/01/16/that-annoying-insert-problem-getting-data-into-the-db-using-dapper) 에서 직접 얻은 것입니다.

업데이트의 경우 다음과 같은 코드가 필요합니다.

public bool Update(Employee employee)
{
    string query = "UPDATE EMPLOYEE SET NAME = @Name WHERE Id = @Id";
    var count = this.db.Execute(query, employee);
    return count > 0;
}


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.