Dapper를 사용하여 C# List를 데이터베이스에 삽입하는 방법그물
Dapper를 사용하여 다음을 삽입하려면 어떻게 해야 합니까?C# List
데이터베이스에 저장합니다.이전에는 Dapper 없이 List values를 데이터베이스에 삽입하기 위해 아래 코드를 사용했습니다.
try
{
connection.Open();
for (int i = 0; i < processList.Count; i++)
{
string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@Id, @st_Time, @ed_Time, @td_Time)";
command = new SqlCommand(processQuery, connection);
command.Parameters.Add("Id", SqlDbType.Int).Value = processList[i].ID;
command.Parameters.Add("st_Time", SqlDbType.DateTime).Value = processList[i].ST_TIME;
command.Parameters.Add("ed_Time", SqlDbType.DateTime).Value = processList[i].ED_TIME;
command.Parameters.Add("td_Time", SqlDbType.DateTime2).Value = processList[i].TD_TIME;
dataReader.Close();
dataReader = command.ExecuteReader();
}
connection.Close();
}
catch (SqlException ex)
{
//--Handle Exception
}
나는 dapper를 사용하여 데이터를 가져오는 것에 익숙하지만 insert 쿼리를 사용하는 것은 이번이 처음입니다.
아래 코드를 사용해 보았습니다.Exceute
쿼리에 연결되었지만 루프 상태로 고착되었습니다. Dapper 도구를 사용하면 루프 문이 필요하지 않다고 생각합니다.
connection.Execute(processQuery ... );
편집:
class ProcessLog
{
public int ID { get; set; }
public DateTime ST_TIME { get; set; }
public DateTime ED_TIME { get; set; }
public DateTime TD_TIME { get; set; }
public string frequency { get; set; }
}
이것에 대해 조언 부탁드립니다.참고: 사용 중입니다.SQL Server 2008
.
당신은 그것을 조금 다르게 해야 할 것입니다.Dapper에서는 SQL 매개 변수와 동일한 AKA 속성 또는 필드 이름과 일치합니다.그래서, 당신이 가지고 있었다고 가정하면,MyObject
:
public class MyObject
{
public int A { get; set; }
public string B { get; set; }
}
그리고 만약에processList = List<MyObject>
당신은 이것을 하고 싶을 것입니다.
foreach (var item in processList)
{
string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";
connection.Execute(processQuery, item);
}
참고:MyObject
속성 이름 A 및 B는 SQL 매개 변수 이름 @A 및 @B와 일치합니다.
개체 이름을 바꾸지 않으려면 구체적인 유형 대신 익명 유형을 사용하여 매핑을 수행할 수 있습니다.
foreach (var item in processList)
{
string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";
connection.Execute(processQuery, new { A = item.A, B = item.B });
}
편집:
Marc Gravell의 의견에 따르면 Dapper가 루프를 수행하도록 할 수도 있습니다.
string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";
connection.Execute(processQuery, processList);
목록을 반복해서 하나씩 삽입하는 것보다 대량 삽입이 더 낫다고 생각합니다.
SqlTransaction trans = connection.BeginTransaction();
connection.Execute(@"
insert PROCESS_LOGS(Id, st_Time, ed_Time, td_Time)
values(@Id, @st_Time, @ed_Time, @td_Time)", processList, transaction: trans);
trans.Commit();
참조: https://stackoverflow.com/a/12609410/1136277
대퍼를 사용합니다.투고 https://dapper-tutorial.net/insert#example---insert-single ! 쉽게 오브젝트 목록을 DB에 삽입할 수 있습니다.
언급URL : https://stackoverflow.com/questions/17150542/how-to-insert-a-c-sharp-list-to-database-using-dapper-net
'programing' 카테고리의 다른 글
날짜 시간 필드별 최신 MongoDB 레코드 가져오기 (0) | 2023.05.02 |
---|---|
MongoDB에서 $set을 사용하여 중첩된 값/포함된 문서를 업데이트하는 방법은 무엇입니까? (0) | 2023.05.02 |
삼면의 경계 (0) | 2023.05.02 |
고정 공간 및 유연한 스페이스 바 버튼 항목을 프로그래밍 방식으로 생성하는 방법은 무엇입니까? (0) | 2023.05.02 |
파이어폭스를 파이썬으로 셀레늄에서 프로그래밍 방식으로 헤드리스로 만드는 방법은 무엇입니까? (0) | 2023.05.02 |