dapper.NET C #을 사용하여 목록 삽입

c# dapper list sql

문제

SQL 테이블에 개체 목록을 삽입하고 싶습니다.

나는이 질문을 알고 여기 하지만 난 이해가 안 돼요.

여기 내 수업이 있습니다 :

public class MyObject 
{
    public int? ID { get; set; }
    public string ObjectType { get; set; }
    public string Content { get; set; }
    public string PreviewContent { get; set; }

    public static void SaveList(List<MyObject> lst)
    {
        using (DBConnection connection = new DBConnection())
        {
            if (connection.Connection.State != ConnectionState.Open)
                connection.Connection.Open();

            connection.Connection.Execute("INSERT INTO [MyObject] VALUE()",lst);                
        }
    }
}

Dapper를 사용하여 목록을 삽입 할 수있는 방법을 알고 싶습니다. 목록에서 반복하고 개별적으로 저장하지 않으려 고합니다. 모든 요청을 하나의 요청에 삽입하고 싶습니다.

수락 된 답변

한 줄을 삽입 할 때처럼 삽입 할 수 있습니다.

public class MyObject 
{
    public int? ID { get; set; }
    public string ObjectType { get; set; }
    public string Content { get; set; }
    public string PreviewContent { get; set; }

    public static void SaveList(List<MyObject> lst)
    {
        using (DBConnection connection = new DBConnection())
        {
            if (connection.Connection.State != ConnectionState.Open)
                connection.Connection.Open();

            connection.Connection.Execute("INSERT INTO [MyObject] (Id, ObjectType, Content, PreviewContent) VALUES(@Id, @ObjectType, @Content, @PreviewContent)", lst);                
        }
    }
}

Dapper는 SQL 매개 변수 (@Id, @ObjectType, @Content, @PreviewContent)를 따서 명명 된 클래스 멤버를 찾아 이에 따라 바인딩합니다.


인기 답변

table-value 매개 변수를 전달해야합니다.
1. SQL 데이터베이스에 테이블 유형을 만듭니다.
2. DynamicParameters를 만들고 데이터 테이블 (새 값)을 추가합니다.
3. 실행하십시오.

SQL :

CREATE TYPE [dbo].[tvMyObjects] AS TABLE(
    [ID] INT,
    [ObjectType] [varchar](70), /*Length on your table*/
    [Content] [varchar](70), /*Length on your table*/
    [PreviewContent] [varchar](70) /*Length on your table*/
)

기음#:

var dynamicParameters = new DynamicParameters();
dynamicParameters.Add("@MyObjects", lst
    .AsTableValuedParameter("dbo.tvMyObjects", new[] 
    {
        "ID" ,
        "ObjectType",
        "Content", 
        "PreviewContent"
    }));

connection.Connection.Execute(@"
    INSERT INTO [MyObject] (Id, ObjectType, Content, PreviewContent) 
    SELECT Id,
           ObjectType,
           Content,
           PreviewContent
    FROM   @MyObjects", dynamicParameters);

자세한 정보 : https://www.codeproject.com/Articles/835519/Passing-Table-Valued-Parameters-with-Dapper



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