대퍼 확장 dbConnection.Get dapper dapper-extensions entity-framework mapping prefix

문제

문제 : Dapper 확장 dbConnection.Get (personId)

Person이라는 모델이 있습니다.

Person
{
    public int PersonId { get; set; }
    public string Name { get; set; }
}

데이터베이스에는이 테이블이 있습니다.

data.Persons
    Pers_Id
    Pers_Name

어떤 종류의 사용자 지정 매핑없이이 작업을 시도하면 "잘못된 개체 이름 'Person'이라는 오류가 발생합니다." 저는이 매핑 문제라고 생각합니다. 왜냐하면 접미어 'Pers_'로 모델을 완전히 매핑하고 'data.Persons'를 사용하면됩니다.

하지만 자동으로 접두어로 매핑하는 방법이 있습니까? 내가 사용하고있는 데이터베이스는 여러 가지 다른 테이블을 가지고있다.

또한 모든 것이 이미 Entity 프레임 워크에 매핑되어 있습니다. Entity DbModelBuilder에서지도 설정을 가져올 수 있습니까?

인기 답변

Dapper-Extensions는 규칙에 기반을두고 있습니다. 스키마의 경우 .dbo를 사용하고 기본 키의 경우 ID를 사용합니다. 테이블이 규약과 일치하지 않으면 사용자 정의 매핑 을 만들어야합니다.

public class MyModelMapper : ClassMapper<MyModel>
{
    public MyModelMapper()
    {

        //use different table name
        Table("table_name");

        //use a custom schema
        Schema("not_dbo_schema"); 

        //have a custom primary key
        Map(x => x.ThePrimaryKey).Key(KeyType.Assigned);

        //Use a different name property from database column
        Map(x=> x.Foo).Column("Bar");

        //Ignore this property entirely
        Map(x=> x.SecretDataMan).Ignore();

        //optional, map all other columns
        AutoMap();
    }
}

또 다른 방법은 Dapper를 사용하여 인라인 쿼리를 작성하는 것입니다.

connection.Query("select * from foo.table where myId = {myId}", new {myId})

최신 정보:

또 다른 대안은 코드 생성 및 T4 텍스트 템플릿 으로 놀아 보는 것입니다.

여기에 사소한 예가있다.



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