SORU
26 NİSAN 2011, Salı


Model veya Kod İlk Yaklaşım EF?

Bu soruyu artıları ve eksileri vb hakkında konuyla ilgili pek çok mesaj okudum gibi daha önce birçok kez soruldu biliyorum ama yine de benim için doğru olan karar veremiyor. Web programlama için çok yeni olduğumu ve SQL DB Admin / rapor arka plan yazı geliyor. Belki daha 30 -40 tablo gelecekte sahip sona erebilir kendi web sitesi kurmak denemeye karar verdim.

Baktım her iki yaklaşım ve yaptığım iyilik Varlık Modeli yaklaşımı sadece, çünkü benim gibi sadelik tasarımcısı ve benim gibi gören tüm model ön beni öyle gösteriyor ki, genel resim içinde bir anlık görüntü. Ayrıca, bana POCO DbContext jeneratör şablonu kullanarak ve sınıflar arasındaki bağlantı mı oluşturur şekilde etkilendim güçlü bir programcı olmak değil.

Ancak, ancak benim gibi Model Yaklaşımı hissediyorum bazı sırt çekmek, emin değilim eğer onlar gerçek dezavantajı ya da hiç bilmem. bu kadar modelin ilk yaklaşım ve kodu ilk yaklaşım olarak ben hala çok yeni.

Model İlk yaklaşım kullanmak için kararsız olmamın Nedeni vardır:

Model üzerinde öğreticiler bulmak için mücadele ediyorum çünkü özellikle ilk yaklaşım MVC 3 ile. En iyi öğretici buldum kullanarak DbContext tarafından Julie Lerman ama o bilmiyor kapak dostum sınıfları olan önemli veriler kullanılarak ek açıklamalar ve diğer değişiklikler değil kaybettiğimde seni yeniden POCOs'. Çoğu öğreticiler 3 MVC Code first yaklaşımı kullanmak gibi görünüyor ilgili. Çoğu insan bu öğretmen EF odaklanmak istiyorum ama daha ziyade tuts daha MVC göstermiyor çünkü olduğunu söylüyorlar. Ben Microsoft İlk metodoloji Kodu Diğerleri:) savunuyor çünkü şahsen olduğunu düşünüyorum

-Eğer dostum sınıfları oluşturmak için iyi bir uygulama bu yüzden birçok öğreticiler bulamıyorum MVC 3 için bu gösteren? Var Dostum Sınıfları Görünüm Modelleri için başka bir isim? Ve neden ben MVC 3 ile kullanmak üzere Microsoft tarafından herhangi bir öğreticiler bu dostum/view modelleri göstermek bulamıyorum?

-Ben 2 tablolar arasında 1 1 temel bir ilişki yapmak için çalışıyordu. Model önce ayarlanmış kimliğini anahtarlarının her masa için aynı alanı kullanmak yerine bir FK bir tablo, hangi olabilir biraz kafa karıştırıcı zaman var 3 ya da daha fazla bağlantılı tablolar için birbirleri ile 1'e 1 ilişki. Bu model builder kullanın ve el ile ayarlanır etrafında kod ilk yolu. MF hiç yapmaya meraklı değilim hangi XML girerek ilişkiyi değiştirebilirsiniz sanırım.

-Daha fazla destek kodu ilk sorunlar konusunda yardım/

Kodu İlk yaklaşım kullanmak için tereddüt am nedenleri vardır:

-Ben acemi bir kodlayıcı değilim.

-Ben proje genişledikçe tablolar ve ilişkileri takip etmek oldukça zor.

-Modeli diyagramı ve gerçekten bu fikir gibi söylemek zorundayım.

-Eşleme imkansız buluyorum yapılandırma sınıfları ile veritabanı:) varlıklar.

Kodu ve DB bir tablo değişikliğine ihtiyaç vardır-güncelleme. Yalnızca bir değişiklik otomatik olarak DB güncelleme ve eğer dostum sınıfları kullanıyorsanız, bu da güncelleme gerekebilir söyledikten Kodu olan modeli ilk Model için.

Ayrıca şimdi görüyorum ki insanlar biraz birleştirerek Kodu İlk ve Veritabanı ilk yaklaşımlar, bu izin vermiyorsun Kodu İlk oluşturmak veritabanı ama el ile bir veritabanı oluşturmak ve kullanmak kod ilk API EF almak için.

Kafamdaki tüm seçenekleri ve dezavantajları ve artıları ve eksileri ile dönüyor. Ben sadece benim web sitesi oluşturmak ve almak için hangi yolu düşünmek istemiyorum. Herkes benim en iyi dediğim şeyi dayanmaktadır ve/düşündükleri ya da gelecekte daha fazla ana akım olacak şeyleri biraz fikir verebilir mi?

Çok teşekkürler dave

CEVAP
27 NİSAN 2011, ÇARŞAMBA


Bu uzun soru çok. Birden fazla ayrı soru halinde sorun bir dahaki sefere kırmak gerekir.

Kod-ilk x Modeli ilk x Veritabanı-ilk

Sizin için en iyi yaklaşım veritabanı-DB şeyler (veya Veritabanı araçları VS) tanımlamak ve veritabanından model güncelleme yaklaşım artımlı yani veritabanı bir adamsın. Bu sizin veritabanı üzerinde büyük bir kontrol ve uygulama ve DB kademeli yapı izin verir. Neden böyle düşünüyorum:

  • Muhtemelen DB hakkında bir şeyler biliyor ve bir performans - EF senin için hiçbir şey yapmayacağım için onları tasarım nasıl DB Admin önce SQL - sen yaptın. EF dizinleri sizin için yaratmaz vb.
  • 30-40 tablolar bir çekim model oluşturmak olacaktır. Küçük modeli ile başlar ve sürekli olarak daha da büyüyecek. Sen DB değişiklik yapmak, ya da başlatma veri ekleme başlayınca bu değişiklikler ve veri kaybetmek istemezsiniz. Kod-öncelikle tüm veritabanını silip sıfırdan yeniden sağlar. Model-ilk aşamalı DB ama Entity Designer Database Generation Power pack ve VS 2010 Premium veya Ultimate ihtiyacınız yapı izin ver($5.000-$10.000).

Daha fazla differences between DB first, Model first and Code first hakkında. answer describes differences between code-first and working with designer Bir başka.

DbContext Veritabanı-Akıcı haritalama API

Bu zor bir yol arardım. Veritabanı ilk tanımlayacaktır ve DbContext API akıcı veya veri ek açıklamalar eşleme tanımlamak için kullanır. Bu EF iyi anlaşılması ve varsayılan Kongre DbContext API kullanılan eşleme anlayış arkasında tüm ilkelere ihtiyaç duyar. Güzel ve açık denetim verecektir eşleme ama yapacak çok iş. Kesinlikle gitmek için en zor yoldur. Ayrıca DbContext API öncelikle kod-ilk yaklaşım için oluşturulduğu için gereken kullanım değildir.

X DbContext API API ObjectContext

Sen EDMX (varlık tasarımcısı) kullanmaya başladıktan sonra da DbContext Jeneratör T4 şablon ya da POCO Jeneratör T4 şablonu kullanmak için bir seçenek vardır. Karar size kalmış - DbContext API (ilk şablon) veya daha iyi olan ObjectContext API (ikinci şablon) ya da belgelenmiş kullanabilirsiniz ve ayrıca iki büyük kitap kullanabilirsiniz:

ObjectContext API bu kitap hakkında olduğunu biliyorum, yazarların bloglar ve pratik Reflektör.

DbContext API şu anda herhangi bir kitap yok. Bu konuda bilgi almak için temel bazı siteleri kontrol edebilirsiniz:

DbContext API hakkında Tek bildiğim bloglar ve pratik Reflektör bu.

Eğer ilk kod kullanıyorsanız bile hala sınıf diyagramı, sınıf diyagramı (EDMX olarak aynı değil ama büyük resmi almak için yeterlidir) görselleştirmek için kullanabilirsiniz.

Yığın Taşması arama veya MSDN forum Her iki API ile yapacağınız en sorunların yanıtlar verecektir.

MVC 3

Hiçbir şey MVC 3 ile varlık çerçevesi kullanarak belirli bir konu var. Veri doğrulama için ek açıklamalar dostum sınıfları kötü uygulama olarak kabul edilir. Dostum bir sınıf için ayrı ayrı sınıf meta sahibi varlık üzerinde uygulamalı olarak kullanılır. Görünüm bir model sınıf denetleyici ve görünümü arasında veri transferi için kullanılır. Görünümü model olmalı başına belirli bir görünüm ile kendi doğrulama ek açıklamalar çünkü genelde gerek farklı doğrulamalarını farklı ekranlar uygulama ile çalışırken aynı varlık türü için örnek bir düzenleme ve ekleme ekranı var farklı doğrulama gereksinimleri.

Rağmen gerçek değil olarak, bu iyi bir uygulama, ekleme doğrulama varlıklar Olası - ya da create buddy class for each your entity manually ya da sen-ebilmek denemek değiştir T4 şablonu oluşturmak için ek açıklamaları için doğrudan (bu zor).

Bire bir ilişki

Evet EF sadece birincil anahtarları üstünde bire bir ilişki kurmayı gerektirir. Nedeni EF benzersiz anahtarlar / kısıtlamaları desteklemiyor. Bu etrafında bir yolu yoktur ve veritabanı içinde benzersiz tuşlarını kullanarak değiştirebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Outler

    Adam Outler

    19 EKİM 2006
  • Orson Wang

    Orson Wang

    28 EKİM 2006
  • SegaAmerica

    SegaAmerica

    5 Mart 2008