2008-10-10 25 views
16

Yeni bir proje başlatmaya hazırlanıyorum ve varlık çerçevesini araştırıyorum. Sorum şu: Varlıkları doğrulamak için en iyi strateji nedir? Çalıştığım diğer projeler, geçerliliğin çoğu için öznitelikleri kullandı, ancak açık olarak, bu durum, çerçeve çerçevesinde mümkün değil. Bu özellik kümeleri kısmi yöntemleri ele alarak bunu yapmanın tek yolu var mı? Tüm tavsiyeler çok takdir edilmektedir.Varlık Çerçeve Doğrulaması

cevap

11

Daha önce Entity çerçevesini kullanmamıştım ancak hızlı arama birkaç seçeneğinizin olduğunu gösterir. Başvurunuzun Daima

bir seçenek başka katmanında

1) doğrula, ben sadece açıkça orada dışarı atmak düşündüm.

2) daha sonra doğrulama

Muhtemel kırılgan gerçekleştirmek İdare OnChanged olayların içine Hook ve her varlık için değiştirebilirsiniz birçok farklı özellikler şeyler varsa kafa karıştırıcı/sonra Yavaş olacaktı. özelliği doğrulamak için

3) uygulamak kısmi yöntemler kısmi yöntemlerini doğrulama için orada this yazılan ve this örneklerde göre

değiştirir. Bu çok müdahaleci olmadığından ve istediğiniz doğrulamayı seçerek uygulayabileceğiniz için en iyi seçeneğiniz gibi görünüyor.

Umarım bu yardımcı olur. İyi şanslar.

+0

# 2 ve # 3 nasıl farklı? Oluşturduğu kısmi yöntemler, bir şeyleri kaçırmadığım sürece OnChanged olaylarıdır. –

+0

Doğru olabilirsiniz. EF'e baktığımdan beri uzun zaman geçti. – smaclell

+3

Sırasıyla varlık ve özellik düzeyi doğrulaması olarak # 2 ve # 3 okuyorum. Bu iki stratejinin farklı amaçları vardır, elbette: varlık düzeyinde doğrulama, tüm özelliklerin birlikte geçerliliğini test eder (örn., Karşılıklı olarak birbirinden ayrılan özellikler her ikisi de ayarlanmaz), oysa mülkiyet düzeyinde doğrulama, yalnızca tek bir mülkün içeriğini dikkate alır. zaman (ör. bir e-posta adresi doğru formdadır). – ladenedge

3

ASP.NET MVC kullanıyorsanız, Doğrulama Uygulama Bloğunu veya System.ComponentModel.DataAnnotations öğesini kullanabilirsiniz. Using Data Annotations ve Using Application Block makaleleri Linq kullanarak nasıl yapılacağını gösterir, ancak varlık-çerçeveyle kullanım benzer olmalıdır.

+0

bağlantıları güncel değil gibi görünüyor mu? –

+0

bağlantıları sabit, sonradan düzenlenmiş - MVC'de uygulanabilir. Teşekkürler Jeff – Shimmy

6

.NET 4'te, Entity-Framework'de kutudan doğrulama doğrulama desteği olacak.

atın: http://blogs.msdn.com/adonet/archive/2010/01/13/introducing-the-portable-extensible-metadata.aspx

Yani

+0

Garip bir şekilde, PEM uzantısı ve örnekleri, bir nedenle, artık MSDN aracılığıyla kullanılamaz. Birisi varsa güncel bir bağlantıya bayılırım! – ladenedge

+0

Umarım bizi kandırmazlar ... Sanırım yanlış söylüyordum, kutunun dışında sadece bir addon olduğunu anlıyorum. Eklentinin http://visualstudiogallery.msdn.microsoft.com/en-us/e6467914-d48d-4075-8885-ce5a0dcb744d adresinden indirilebileceğini ancak bozuk olduğunu görmek için bağlantıya göz atabileceğini söylüyor. – Shimmy

+0

Bu bağlantıyı http://code.msdn.microsoft.com/DesignerExtStartKit/Wiki/View.aspx?title=Home&version=3 adresindeki yorumlarda buldum, henüz ödeme yapmak için zamanım olmadı. – Shimmy

2

This makale Entity Framework ile Doğrulama Application Block nasıl entegre edileceğini açıklamaktadır ... çok karmaşık doğrulama mantığını uygulamak için çok için çalışmaz. Bazı yardımlar olabilir.

0

WPF veya Windows Forms kullanıyorsanız, IDataErrorInfo arabirimini uygulayabilirsiniz.

WPF Application Framework (WAF) projenin BookLibrary örnek uygulama İdare Framework yarattığı varlıklar doğrulanabilir gösterir.

1

Biz() yöntemi SaveChanges nesne bağlamı overrident ve müdahale var

public abstract class ValidationObjectContext : ObjectContext{ 
    ... 

    public override int SaveChanges(SaveOptions options){ 
     ValidateEntities(); 
     return base.SaveChanges(options); 
    } 

} 

sen (bekliyor) sonra doğrulama bağlantısı yapılmadan önce son dakikaya kadar bırakılır ancak bu şekilde mutlu olmak grafik ve işlemeye hazır, (herhangi bir değişiklikle ilgili doğrulama için diğer seçeneklerin aksine, sahip olduğumuz bazı karmaşık kurallar yalnızca birkaç özellik belirlendikten sonra geçerlidir).İki seviyeli doğrulama, Temel Mülkiyet validasyonu, string uzunluğu gibi şeyler, nullability vb. Ve iş mantığının doğrulanmasını gerektirebilir.

0

Varlıklarınızda IValidatableObject uygulamasını düşünün.

İlgili konular