2013-04-11 35 views
6

Bu EF'yi takip etmeyen mevcut projemde varlık çerçevesi sürüm 4.3.1'i uygulamak istiyorum. Veritabanı zaten geliştirilmiş ve şu anda ado.net'i uygulamakta kullanılıyor. Bu durumda nasıl EF üzerinde çalışmak için başlıyorum, Önce Veritabanı, Önce Kod.Varlık veritabanı ile Varlık Çerçevesi

cevap

13

Bir veritabanı zaten var Ben hala Kod İlk yaklaşımını kullanıyorum, ek açıklamaları kullanarak tabloları eşleme, çünkü alan EDMX dosyasından daha organize. Birçok tablo varsa görsel EDMX gerçekten işe yaramaz hale gelebilir çünkü tasarım her yerde veri ve bağlantılar ile aşırı kalabalık olacaktır. Oluştur)

[Table("tbl_cust")] 
public class Customer 
{ 
    [Key] 
    [Column("cust_id")] 
    public int CustomerId { get; set; } 
    [Column("cust_name")] 
    public string Name { get; set; } 
    // Add other properties below 
} 

2:

iki aşamada tüm bu yaklaşımla başlayabilir:

1), örneğin Customer etki alanı modeli sınıf oluşturun ve veri açıklamaları kullanarak tabloya eşlemek bir bağlam sınıfı her model için DbSet<T> özelliklerini DbContext doğan ve set, böylece bizim durumumuzda sadece bir tane var:

public class MyApplicationContext: DbContext 
{ 
    public MyApplicationContext() : base("name=ConnectionStringName") { } 

    public DbSet<Customer> Customers { get; set; } 
} 

Şimdi her yerde türetilmiş DbContext sınıf örneğini ve Linq kullanarak sorgular yapabilir kodunuzda:

var _db = new MyApplicationContext(); 
var customer = _db.Customers.Where(c => c.CustomerId == 37).FirstOrDefault(); 

Nuget kullanarak montaj EntityFramework bir başvuru eklemek unutmayın.

İyi Şanslar.

+0

Tüm müthiş çözüm için teşekkür ederiz.Ama ilk önce Ters Mühendisi koduyla Kod'u kullanmayı tercih etsem bile ilk önce Veritabanına gitmem gerektiğini tahmin ediyorum.İlk olarak Kod'u denedim ama hiçbir şans getirmeyecek. sınıfları ve başarısız belki de veritabanım çok iyi dizayn edilmedi.Hata için başka bir neden? –

+0

"EF sınıflarını oluşturmadı" ile ne demek istiyorsun? EF Classes tarafından –

+0

demek istiyorum. Tablolar için Domain sınıfları demek istiyorum. Modeller klasörü.İlk olarak ters mühendislik kodunu yaptıktan sonra popülasyon göremiyorum. Bu bağlantıyı http://msdn.microsoft.com/tr takip ediyordum. -us/data/jj200620.aspx –

1

Veritabanınız zaten mevcut olduğundan, ilk tercih edilen Veritabanları'dır. Veritabanı sağduyu ile tasarlanmış ise (çoğunlukla) harika çalışır.

0

Sorunun, EF Designer'ı veritabanınızı görselleştirmek için kullanıp kullanmak istemediğinizi düşünüyorum. EF 4.3.1'e baktığınız için (aslında EF5'e değil 4.3.1'e bakmalısınız - EF5 en son versiyonudur) Tasarımcının umurunda değilsiniz. Bu durumda veritabanınızı tersine çevirmek için EF Power Tools'u kullanabilirsiniz. Bu, veritabanınızı eşleştirecek bir dizi sınıf oluşturacaktır. Veritabanı zaten oluşturulduğundan beri, EF'in sınıflarınızdaki değişiklikleri algılayamayacağını unutmayın (Veritabanında ek bilgi saklandığında Kod İlkesi tarafından oluşturulan veritabanlarının aksine ve EF modelin değişip değişmediğini anlayabiliyor). Bu blog post'u okuduğunuzdan emin olun - karar vermede yardımcı olabileceğiniz birçok ayrıntı içerir. Modelinizi tasarımcıda görebilmeyi önemsiyorsanız, DB'yi tersine çevirmek için VS'yi kullanabilirsiniz. VS2012 kullanıyorsanız, varsayılan olarak EF5 ve DBContext olsun. Kod İlkini kullanmanın getirdiği fark, modelinizin EF gereksinimlerini sınıflarınıza bağlı olarak oluşturmak yerine, projenizin bir parçası olan edmx dosyasına (ve sizin için kod oluştururken) kaydedilmesidir.