2017-02-02 1 views
0

문제와 :단정 확장 dbConnection.Get <Object>

data.Persons 
    Pers_Id 
    Pers_Name 
:이 테이블이 데이터베이스에서

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

: 단정 한 확장 dbConnection.Get (personId)

나는 사람이라는 모델을 가지고

사용자 지정 매핑없이이 작업을 시도하면 "잘못된 개체 이름 'Person'이 표시됩니다." 접두어 'Pers_'로 모델을 완전히 매핑하고 'data.Persons'를 사용하면이 매핑 문제라고 생각합니다. 작품 가져 오기.

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

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

답변

2

대퍼 확장은 규칙을 기반으로합니다. 스키마의 경우 .dbo를 사용하고 기본 키의 경우 ID를 사용합니다. 테이블이 규칙과 일치하지 않으면 custom mapping을 만들어야합니다.

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

업데이트 : 또 다른 대안은 여기 Code Generation and T4 Text Templates

놀러입니다

가있다

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(); 
    } 
} 

대안은 말끔를 사용하고 당신의 인라인 쿼리를 작성하는 것입니다 사소한 것 example

+0

맞춤 매퍼에 대한 규칙을 자동 생성하거나 설정하는 방법이 있습니까? 나는 아마도 100 개의 테이블을 가지고 있으며 많은 매퍼를 만들고 싶지는 않습니다 ... – doper1234

+0

답변을 업데이트합니다. 나는 당신을 위해 그것을할만한 것을 전혀 모르지만, 당신은 당신 자신의 코드 생성기를 작성할 수있다. –

관련 문제