dbpper-dot-net 매핑에 DB 열 이름을 지정할 수 있습니까?

c# dapper database

문제

dapper-dot-net을 사용하여 속성을 사용하여 속성 이름이 아닌 열 이름을 지정하는 방법이 있습니까?

public class Code
{
    public int Id { get; set; }
    public string Type { get; set; }
    // This is called code in the table.
    public string Value { get; set; }
    public string Description { get; set; }
}

내가 선택한 것은 무엇이든간에 내 부동산의 이름을 지을 수 있기를 바랍니다. 우리 데이터베이스에는 일관된 명명 규칙이 없습니다.

dapper가 아니라면 비슷한 추가 옵션이 있습니까?

수락 된 답변

Dapper-Extensions를 확인할 수도 있습니다.

Dapper Extensions는 POCO에 대한 기본 CRUD 작업 (Get, Insert, Update, Delete)을 추가하여 Dapper를 보완하는 작은 라이브러리입니다.

자동 클래스 맵퍼 가 있으며 사용자 정의 필드 맵핑을 지정할 수 있습니다. 예 :

public class CodeCustomMapper : ClassMapper<Code>
{
    public CodeCustomMapper()
    {
        base.Table("Codes");
        Map(f => f.Id).Key(KeyType.Identity);
        Map(f => f.Type).Column("Type");
        Map(f => f.Value).Column("Code");
        Map(f => f.Description).Column("Foo");
    }
}

그럼 그냥해라.

using (SqlConnection cn = new SqlConnection(_connectionString))
{
    cn.Open();
    var code= new Code{ Type = "Foo", Value = "Bar" };
    int id = cn.Insert(code);
    cn.Close();
}

POCO 클래스와 동일한 어셈블리에 사용자 지정 맵을 유지해야한다는 점에 유의하십시오. 라이브러리는 리플렉션을 사용하여 사용자 정의 맵을 찾고 하나의 어셈블리 만 스캔합니다.

업데이트 :

이제 SetMappingAssemblies를 사용하여 스캔 할 어셈블리 목록을 등록 할 수 있습니다.

DapperExtensions.SetMappingAssemblies(new[] { typeof(MyCustomClassMapper).Assembly });

인기 답변

select 문을 직접 사용하거나 프로 시저에서 사용하는 경우 열을 별칭으로 지정할 수 있습니다.

SELECT code as Value FROM yourTable


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