2015-02-18 23 views
5

Dapper’da yeniyim ve veritabanı dizgilerini enumlarla eşleştirmenin mümkün olup olmadığını anlamaya çalışıyorum; varsayılan olarak benim için olmaz. Örneğin Dapper: Bir dizgeyi enum'a dönüştürme

, hep varsayılan enum ile bitirmek Bu durumda bu enum

public enum CustomerType 
{ 
    Unknown, 
    SomeCustomerType, 
    ... 
} 

ile bu SQL

select customer_type from customers 

ve bu sınıfı

public class Customer 
{ 
    ... 
    public CustomerType CustomerType { get; set; } 
    ... 
} 

kullanmak demek Dize değerinin veritabanından eşlenmesi yerine değer (Bilinmeyen).

Bunu nasıl başarabileceğimi bilen var mı?

Düzenleme: Bunun bir sayı alanı ile mümkün olduğunu biliyorum çünkü bir sayı bir numaraya dönüşecek, ancak bu, veritabanı kimliğinin ve enum'un eşzamanlı olarak saklandığından emin olmanın dezavantajına sahip. Ben benzer bir şey arıyorum ama dize ile. Eğer çok çalışması gerekir Mülkünüzde ile aynı ada sahip sütun adı için diğer ad ise

+2

teşekkürler, ama bu cevabı zaten gördüm. Bu gerçekten sadece bir iş. Sahip olduğum her enum mülk için bir gölge mülk yaratmamayı tercih ederim. – johnB

+1

Neden DB'de sayısal bir sütun kullanmıyorsunuz? Onları senkronize tutmak, enum değerlerini (gereksiz olsa bile) değişmeyen değerlerinden korumaktan vazgeçmek kadar kolaydır. Aynı zamanda, bir dizgeden daha tutarlı olmak için daha az israf ve daha kolay. – Alejandro

+2

Büyük bir kod tabanı ve veritabanı ile çalışıyorum bu yüzden çok iş olurdu. Ayrıca senkronizasyondan kurtulursa sessizce başarısız olmanın dezavantajı vardır. – johnB

cevap

0

:

SELECT REPLACE(customer_type, ' ','') As CustomerType FROM customers

Ayrıca CUSTOMER_TYPE için durumunda değerleri beyaz boşlukları kaldırmak için değiştirmek işlevini kullanabilirsiniz veritabanındaki alanın herhangi biri vardır.