728x90
반응형
728x170
▶ EmployeeModel.cs
namespace TestProject
{
/// <summary>
/// 직원 모델
/// </summary>
public class EmployeeModel
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region ID - ID
/// <summary>
/// ID
/// </summary>
public string ID { get; set; }
#endregion
#region 성명 - Name
/// <summary>
/// 성명
/// </summary>
public string Name { get; set; }
#endregion
}
}
728x90
▶ Program.cs
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using Oracle.ManagedDataAccess.Client;
using Dapper;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 직원 매핑 딕셔너리
/// </summary>
private static Dictionary<string, string> _employeeMappingDictionary = new Dictionary<string, string>
{
{ "EMPNO", "ID" },
{ "ENAME", "Name" }
};
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
private static void Main()
{
CustomPropertyTypeMap employeeMap = new CustomPropertyTypeMap
(
typeof(EmployeeModel),
(type, columnName) => SelectEmployeeProperty(type, columnName)
);
SqlMapper.SetTypeMap(typeof(EmployeeModel), employeeMap);
string connectionString = @"Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS =
(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = orcl)));User ID=SYSTEM;Password=P@ssw0rd";
string sql = @"
SELECT
EMPNO
,ENAME
FROM SCOTT.EMP
";
using(OracleConnection connection = new OracleConnection(connectionString))
{
var resultList = connection.Query<EmployeeModel>(sql).ToList();
foreach(var item in resultList)
{
Console.WriteLine($"{item.ID} {item.Name}");
}
}
}
#endregion
#region 직원 속성 선택하기 - SelectEmployeeProperty(type, columnName)
/// <summary>
/// 직원 속성 선택하기
/// </summary>
/// <param name="type">타입</param>
/// <param name="columnName">컬럼명</param>
/// <returns>속성 정보</returns>
private static PropertyInfo SelectEmployeeProperty(Type type, string columnName)
{
if(_employeeMappingDictionary.ContainsKey(columnName))
{
return type.GetProperty(_employeeMappingDictionary[columnName]);
}
else
{
return type.GetProperty(columnName);
}
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > Dapper' 카테고리의 다른 글
[C#/DAPPER] 누겟 설치 : Dapper (0) | 2020.09.29 |
---|---|
[C#/DAPPER] SqlMapper 클래스 : GetRowParser 확장 메소드를 사용해 제네릭 타입 데이터의 .CSV 파일 생성하기 (0) | 2020.04.25 |
[C#/DAPPER] SqlMapper 클래스 : TypeHandler<T> 정적 메소드를 사용해 커스텀 타입 처리하기 (0) | 2020.02.02 |
[C#/DAPPER] IDbConnection 클래스 : QueryMultiple 확장 메소드를 사용해 2개 이상의 SELECT문 조회하기 (0) | 2020.02.02 |
[C#/DAPPER] SYS_REFCURSOR 출력 타입의 입력 매개 변수를 갖는 오라클 저장 프로시저 호출하기 (0) | 2020.02.02 |
[C#/DAPPER] NULLABLE DATETIME 사용시 처리하기 (0) | 2017.10.07 |
[C#/DAPPER] 부모 객체를 포함해 조회하기 (0) | 2017.06.26 |
[C#/DAPPER] 자식 리스트를 포함해 조회하기 (0) | 2017.06.26 |
[C#/DAPPER] IN 조건문 조회하기 (0) | 2016.08.30 |
[C#/DAPPER] COUNT 집계 함수 사용하기 (0) | 2016.05.22 |
댓글을 달아 주세요