2010-11-01 17 views
6

benim ilk tam ölçekli proje MVC kullanarak, üzerinde çalışıyorum bir projede kullanılmak üzere Gil Fink tarafından Çalışma şablonlarının T4 Repository/Ünite uyguladı. Ancak, daha önce almadığım bir hata alıyorum ve onu takip edemiyorum. Şablonlarla ilgili bir şey mi, yoksa yanlış ayarladığım bir yer mi bilmiyorum, ama şu an kaybettim. Birinin duruma ışık tutacağını umuyordum.MVC3 EF4'ü POCO Deposu/UnitOfWork Bağlantı Hatası

İşte benim çerçeve Kurulum:

  • MVC 3 Beta
  • SQL Server 2008 R2
  • Ninject v2.1.0.76
  • EF4'ü POCO
  • çözeltide 3 projeleri: Veri, Varlıklar ve MVC uygulaması.

Ben Microsoft'un ADO.NET POCO Varlık Üreticisi aracılığıyla, bir DB ilk tasarım yapıyor, ve Poco sınıfları oluşturmak için EF kullanıyorum. Daha sonra T4 aracını kullanarak depo ve çalışma düzenlerini yaratıyorum. Bu kurulumla ve oluşturulan tüm sınıflar ve depolarla, Ben DI için Ninject kullanarak MVC uygulamasına uygularım. Bu noktada bir Denetleyici Fabrikası kullanarak MVC 2 yöntemini kullanıyorum ve daha sonra bunu IDependencyResolver yöntemine değiştirmeyi planlıyorum.

Sabit kodlanmış bir Mock deposu kullandığımda, uygulama gerektiği gibi çalışır, ancak bunu IRepository bağlayıcısını kullanmak için değiştirdiğimde, aşağıdaki hatayı alıyorum: "Ürünle verilen bağlantı yetersiz içeriyor çünkü bu bağlantı geçerli değil mapping veya metadata bilgileri Parametre adı: bağlantı " Bu, EF'nin DB'ye bağlantı için bağlantı dizesinin yanlış olduğunu, ancak ADO.NET Varlık Veri Modeli şablonu tarafından oluşturulan varsayılan dizgenin olduğunu gösterir. Belki de .edmx ayarlarında bir şeydir.

İşte (kullanışlı inek yemeği veritabanı düzeni kullanarak) benim bağlantı dizesi herhangi düşünceler/ipuçlarıyla

<add name="NerdDinnerEntities" 
connectionString="metadata= 
res://*/Model1.csdl| 
res://*/Model1.ssdl| 
res://*/Model1.msl; 
provider=System.Data.SqlClient; 
provider connection string=&quot;Data Source=Wayne;Initial Catalog=NerdDinner;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True&quot;" 
providerName="System.Data.EntityClient" /> 

Herkes, vb, ben son derece memnun olurum.

Düzenleme: Repository and Unit of Work T4 Template for Entity Framework

Edit2: hata ben İşin Birimi ile DI kullanıyorum ev ile ilgili bir şey olduğunu burada kullanıyorum T4 şablon için bağlantı. DI'yi kaldırdığımda ve denetleyicilere bağımlılıkları el ile verdiğimde, çalışır. DI'yi uygulamaya çalıştığımda, kırılıyor.

cevap

3
res://*/Model1.csdl| 

* EF diyen bir joker olduğunu Yani "kaynak için tüm meclisleri tarama". Şanslar, bu tarama, herhangi bir sebepten dolayı meclisi bulamıyor. sizin derleme adının

değişiklikler *: Eğer Ninject bağımlılığı kurmaya Nuget kullanıyorsanız

res://My.Assembly.Name/Model1.csdl| 
+0

Bunu gerçekten denedim. Bunun için doğru montaj adını aldığımdan emin olmak için .NET Reflector'u kullandım. Hatta "res: // * /;" bir "tek adım" çözüm denedim, ama bu da işe yaramadı. –

+1

Bingo! Bu benim sorunumu çözdü. Teşekkürler @jfar –

1

, bu NinjectWebCommon.cs daki DI bağlantıları kurmak için sever. DI bağlaçlarınızı yüklüyorsanız, öznitelik için bir Varlık Çerçevesi bağlamı gerektirir; bu, uygulama yaşam döngüsünde çok erken olur ve uygulama, bağlantı dizesini düzgün bir şekilde yorumlayamaz.

Bunun sizin için bir şey olduğunu düşünüyorsanız, see my answer here for more information.