Dapper로 축약어 삽입 - 열을 지정하지 않고

c# dapper database-connection sql sql-server

문제

모든 열을 지정하지 않고도 dapper로 축약 삽입을 할 수 있습니까? 하나의 객체 또는 객체 목록을 전달하기 만하면됩니다. 내 모델 이름이 모두 내 테이블 이름과 일치합니다.

나중에 다른 필드를 추가하는 경우 코드 관리가 최소화되기 때문에 다른 항목의 엔티티를 복사하고 열을 지정하지 않으려는 함수를 작성 중입니다.

StringBuilder sql = new StringBuilder();
sql.AppendLine("SELECT *");
sql.AppendLine("FROM Product ");
sql.AppendLine("WHERE Id = @Id");
Product source = connection.Query<Product>(sqlCopy.ToString(), 
    new
    {
        Id = productId
    }, transaction).SingleOrDefault();


// INSERT source entity here without specifying INSERT INTO (COLUMNS)

인기 답변

Dapper.SimplerCRUD ( https://github.com/ericdc1/Dapper.SimpleCRUD ) 또는 Dapper.Contrib ( https://github.com/StackExchange/Dapper/tree/master/Dapper.Contrib )를 사용해 보셨나요?

Dapper.SimplerCRUD 삽입 (github 예제에서) :

public static int Insert(this IDbConnection connection, object entityToInsert)

사용 예 :

[Table("Users")]
public class User
{
   [Key]
   public int UserId { get; set; }
   public string FirstName { get; set; }
   public string LastName { get; set; }
   public int Age { get; set; }

  //Additional properties not in database
  [Editable(false)]
  public string FullName { get { return string.Format("{0} {1}", FirstName, LastName); } }
   public List<User> Friends { get; set; }
   [ReadOnly(true)]
   public DateTime CreatedDate { get; set; }
}

var newId = connection.Insert(new User { FirstName = "User", LastName = "Person",  Age = 10 });  

Contrib (github 예제에서) : 메소드 삽입

엔티티 하나 삽입

connection.Insert(new Car { Name = "Volvo" });

또는 엔티티의 목록.

connection.Insert(cars);


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow