2010-07-20 24 views
5

Bir müşterinin bir excel dosyası, csv veya sekmeyle ayrılmış dosya alabildiği bir projem var. Bu dosya bir SQLite veritabanı tablosuna dönüştürdüğüm bir veri dosyasına yüklenir. Gerçekten yazılan nesneler ve veri kümeleriyle çalışmayı tercih ederim, bu yüzden yansıtma kullanarak güçlü bir şekilde yazılan bir sınıfa oluşturulan veritabanı tablosunu kolayca dönüştürmenin bir yolu var mı? Kicker, uygulama içine aktarılan dosya her zaman farklı olacak (yani, farklı sütunlar), bu yüzden gerçekten yazılan herhangi bir nesneyi gerçekten kodlayamıyorum, her zaman anında oluşturulmaları gerekecek.Veritabanından veya veritabanı tablosundan sınıf üret

cevap

0

Ryan zaten doğru soruyu sordu ve ben sadece güçlü bir şekilde yazılan bir sınıfın tek yararının tasarım veya derleme zamanında olduğunu ancak çalışma zamanında olmadığını kabul edebilirim.

Belki de bu tabloyu kullanan başka bir uygulamada bazı güçlü tür sınıfları oluşturduğunuz SQLlite tablolarınızı oluşturduktan sonra.

Bu durumda büyük olasılıkla T4 - Text Template Transformation Toolkit'a bir göz atabilirsiniz, bu nedenle bir sorgudan güçlü tür sınıfları oluşturabilir, böylece bu sınıfları başka uygulamalar için derleme zamanında kullanabilirsiniz.

Ancak, kullanmaya başlamadan önce, T4'ün best kept Visual Studio secret s'den biri olduğunu bilmelisiniz. ;-)

4

Teorik olarak, Reflection.Emit gibi bir şey kullanarak bir derleme oluşturma olabilir, ya:

fazla bilgi için aşağıdaki linklere bir göz atın kod dosyaları üreterek ve derleyiciyi bir derleme haline getirmek için çağırmakla bile. Bununla birlikte, bunun nasıl yararlı olacağından emin değilim. Bu tabloların şemasının çalışma zamanında belirlendiği sürece, bu oluşturulan sınıfların herhangi bir kullanımı, yansıtmayı kullanmadan eklediğiniz güçlü yazılan özellikleri kullanamaz ve bu noktada esasen ilgileniyorsunuzdur Eklenen performans yansımasıyla zayıf bir şekilde yazılan bir şey. C# 4.0'daki dinamik tipler, performans isabetini ortadan kaldırabilir, ancak gerçek bir fayda sağlamak için hala çok fazla karmaşıklık ekliyorsunuz.

İlgili konular