Dapper로 삽입 및 업데이트 수행

c# dapper orm

문제

Dapper 사용에 관심이 있습니다. 그러나 Query와 Execute 만 지원한다고 말할 수 있습니다. Dapper에는 객체 삽입 및 업데이트 방법이 포함되어 있습니다.

우리 프로젝트 (대부분의 프로젝트?)가 삽입 및 업데이트를 수행해야한다는 것을 감안할 때, 삽입 도구와 함께 삽입 및 업데이트를 수행하는 가장 좋은 방법은 무엇입니까?

가급적이면 ADO.NET 매개 변수 구축 등의 방법을 사용하지 않아도됩니다.

이 시점에서 내가 제시 할 수있는 가장 좋은 대답은 삽입 및 업데이트에 LinqToSQL을 사용하는 것입니다. 더 나은 대답이 있습니까?

수락 된 답변

Google은 몇 가지 도우미를 작성하면서 API를 결정하고 이것이 핵심이든 아니든간에 결정합니다. 진행 상황은 https://code.google.com/archive/p/dapper-dot-net/issues/6 을 참조하십시오.

그 동안 다음을 할 수 있습니다.

T Get<T>(id);
IEnumerable<T> GetAll<T>();
int Insert<T>(T obj);
int Insert<T>(Enumerable<T> list);
bool Update<T>(T obj);
bool Update<T>(Enumerable<T> list);
bool Delete<T>(T obj);
bool Delete<T>(Enumerable<T> list);
bool DeleteAll<T>();

내 블로그 게시물 참조 : 그 성가신 INSERT 문제

최신 정보

주석에서 지적했듯이, 이제 이러한 IDbConnection 확장 메서드의 형태로 Dapper.Contrib 프로젝트에서 사용할 수있는 몇 가지 확장이 있습니다.

T Get<T>(id);
IEnumerable<T> GetAll<T>();
int Insert<T>(T obj);
int Insert<T>(Enumerable<T> list);
bool Update<T>(T obj);
bool Update<T>(Enumerable<T> list);
bool Delete<T>(T obj);
bool Delete<T>(Enumerable<T> list);
bool DeleteAll<T>();

인기 답변

Dapper를 사용하여 CRUD 작업을 수행하는 것은 쉬운 작업입니다. CRUD 작업에 도움이 될 아래의 예를 언급했습니다.

C RUD 코드 :

방법 # 1 : 이 방법은 다른 엔티티의 값을 삽입 할 때 사용됩니다.

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString))
{
    string insertQuery = @"INSERT INTO [dbo].[Customer]([FirstName], [LastName], [State], [City], [IsActive], [CreatedOn]) VALUES (@FirstName, @LastName, @State, @City, @IsActive, @CreatedOn)";

    var result = db.Execute(insertQuery, customerViewModel);
}

방법 # 2 : 이 방법은 엔티티 속성이 SQL 열과 이름이 같은 경우에 사용됩니다. 따라서 Dapper는 ORM이므로 엔티티 특성과 일치하는 SQL 열을 매핑합니다.

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString))
{
    string insertQuery = @"INSERT INTO [dbo].[Customer]([FirstName], [LastName], [State], [City], [IsActive], [CreatedOn]) VALUES (@FirstName, @LastName, @State, @City, @IsActive, @CreatedOn)";

    var result = db.Execute(insertQuery, customerViewModel);
}

C R에 대한 코드 UD :

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString))
{
    string insertQuery = @"INSERT INTO [dbo].[Customer]([FirstName], [LastName], [State], [City], [IsActive], [CreatedOn]) VALUES (@FirstName, @LastName, @State, @City, @IsActive, @CreatedOn)";

    var result = db.Execute(insertQuery, customerViewModel);
}

CR U 코드 D :

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString))
{
    string insertQuery = @"INSERT INTO [dbo].[Customer]([FirstName], [LastName], [State], [City], [IsActive], [CreatedOn]) VALUES (@FirstName, @LastName, @State, @City, @IsActive, @CreatedOn)";

    var result = db.Execute(insertQuery, customerViewModel);
}

CRU D 코드 :

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString))
{
    string insertQuery = @"INSERT INTO [dbo].[Customer]([FirstName], [LastName], [State], [City], [IsActive], [CreatedOn]) VALUES (@FirstName, @LastName, @State, @City, @IsActive, @CreatedOn)";

    var result = db.Execute(insertQuery, customerViewModel);
}



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