Özellik değeri çevirilerini QueryOver sorgularıma dahil etmek istiyorum.Mülk değer dönüşümü NHibernate QueryOver içine nasıl dahil edilir.SelectList?
Doğrudan MVC görünüm modelleri üreten Sorgu Nesne Kalıbı'nı kullanarak sorgu yazmaktan hoşlanırım. Görünüm modellerimde, dönüşüm karmaşıklığını görünümler ve denetleyicilerden uzak tutarak mümkün olduğunca basit mülk türlerini kullanmaya çalışıyorum. Bu, bazen, tarihlerin dizelere dönüştürülmesi gibi, bir türü diğerine dönüştürmem gerekeceği anlamına gelir.
Bu tür dönüşümlerin görünümlerde yapılması gerektiğini söyleyebilirim, ancak görünüm modellerimin çoğu doğrudan JSON nesnelerine dönüştürüldüğünden, dönüşümün çok daha hantal hale gelmesine neden olabilir. JavaScript'te dize dönüşüme tarih yapmak en iyi ihtimalle sorunludur ve JSON çeviricim yeterince esnek değildir. bunun nedeni şu hattın olduğunu Açıkçası
Object of type 'System.DateTimeOffset' cannot be converted to type 'System.String'.
:
// Entity.
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public DateTimeOffset DateCreated { get; set; }
}
// View model.
public class CustomerViewModel
{
public string Name { get; set; }
public string DateCreated { get; set; } // Note the string type here.
}
// Query.
CustomerViewModel model = null;
List<CustomerViewModel> result = Session.QueryOver<Customer>()
.SelectList(list => list
.Select(n => n.Name).WithAlias(() => model.Name)
.Select(n => n.DateCreated).WithAlias(() => model.DateCreated))
.TransformUsing(Transformers.AliasToBean<CustomerViewModel>());
.Future<CustomerViewModel>()
.ToList();
sorgu kod çalıştıran aşağıdaki istisnası atılır: Burada
ne yapıyorum bir örnek:.Select(n => n.DateCreated).WithAlias(() => model.DateCreated))
Yani soru şu: nasıl sorguya dize dönüştürme tarihini dahil etmek için?
Dönüştürme işlemi gerçekleştirildikten sonra dönüştürme işlemini gerçekleştirmek istemiyorum çünkü sonuçları dönüştürmeden önce sonuçları saklamak için başka bir ara sınıfa ihtiyacım var.
Teşekkürler. Takma adıyla ilgili olarak, gerçekten gereksizdir, bu yüzden onu sorudan çıkardım. İlk örneğinizdeki dize dönüşümü, gerçekten buna ihtiyaç duyarken, dize formatı üzerinde hiçbir kontrol bırakmıyor.İkinci önerinizi araştıracağım, yine de bana yardımcı olabilir, ancak yine de görünüm model sınıfı yerine sorgu nesnesinde dönüşümü yapmayı tercih ediyorum. –
İyi şanslar, bir sürü şey denedim ama bu en iyisi. Diğer olasılıklar, özel bir transformatör veya Automapper kullanarak oluşturuyor. –
Çok çirkin ama AFAIK hala işe yarayan tek çözüm. QueryOver'ın, ToString() ile o kadar çok sorun yaşadığının bilincinde ... – Aaronaught