2015-12-30 7 views
13

Veritabanı alan adlarını sınıf adlarıyla eşleştirmenin birçok yolu vardır, ancak altçizgi kaldırmak için en basit yol hangisidir?Haritalama sırasında alan adlarındaki altçizgi yok saymak/kaldırmak için Dapper nasıl edinilir?

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

Tablo ve veritabanı alanları:

person 
-------- 
person_id 
full_name 

Sınıf çalışır: (şık zaten görmezden harf) Ben sınıfını değiştirmek istiyorum ne

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

Eğer PostgreSQL değil SQL Server kullandığınızdan emin misiniz? – Andomar

+0

Evet. :) Komut tipinin "saklı yordam" olduğu ve postgresql'in sadece işlevleri olduğu için soruyorsunuzdur? Hala çalışıyor. – scw

cevap

23
Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true; 

iş; p

+0

Vay. Bunu bağlantı fabrikama koydum ve işe yarıyor ama daha iyi bir yer var mı? – scw

+0

@scw Peki, kendi tür harita uygulamanızı yazabilirsiniz ... ama: bu işler –

+0

Tek bir Dapper çağrısı için şartlı olarak bunu yapmanın bir yolu var mı? – julealgon

2

The readme, sütunları yeniden adlandırma konusunda herhangi bir destek göstermiyor. Sen select bunları diğer ad olabilir:

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

this answer önerildiği üzere. yapılan

+1

Aslında, destekleniyor - cevabıma bakın –