2015-12-30 24 views
13

データベースのフィールド名をクラス名にマップする方法はたくさんありますが、アンダースコアを削除する最も単純な方法は何ですか?マッピング時にDapperにフィールド名のアンダースコアを無視/削除させる方法はありますか?

public IEnumerable<PersonResult> GetPerson(int personId) 
    { 
     using (var dbConnection = _dbConnectionFactory.Create(ConnectionStrings.ProjectXYZ)) 
     { 
      IEnumerable<PersonResult> result = 
       dbConnection.Query<PersonResult>("fn_get_person", new { personId }, 
        commandType: CommandType.StoredProcedure).ToList(); 

      return result; 
     } 
    } 

表とデータベースフィールド:

person 
-------- 
person_id 
full_name 

クラス作品:(Dapperのは、すでに無視総額)私は、クラスを変更したい何

public class PersonResult 
{  
    public int Person_Id { get; set; } 
    public string Full_Name { get; set; } 
} 

public class PersonResult 
{  
    public int PersonId { get; set; } 
    public string FullName { get; set; } 
} 
+0

あなたはPostgreSQLのではなくSQL Serverを使用しているあなたは確かにいますか? – Andomar

+0

はい。 :)あなたはコマンドタイプが "ストアドプロシージャ"であり、postgresqlが関数を持っているだけなので、あなたは尋ねていると思いますか?それはまだ動作します。 – scw

答えて

23
Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true; 

仕事を; P

+0

うわー。私はこれを私の接続工場に入れ、それは動作しますが、より良い場所がありますか? – scw

+0

@scwあなたは独自の型マップ実装を書くことができますが、これは動作します –

+0

Dapperの呼び出しで条件付きで行う方法はありますか? – julealgon

2

readmeは列名の変更をサポートしていません。あなたはselectでそれらのエイリアスを作成できます。

select person_id as personid, full_name as fullname from fn_get_person(); 

this answerで提案されているように。

+1

実際、それはサポートされています - 私の答えを参照 –

関連する問題