2016-05-02 15 views
5

BAKIŞ
Çalışmaya başlamak Çaba alınamıyor. Tüm hileleri bulabildiğim tüm yayınlarda denedim.
Tüm mesajlar 'RegisterProvider' dediğimiz veya bir yapılandırma bölüm eklemek için ya söylüyorlar. Ne de çalışıyor.EntityFramework ile çalışmak için nasıl çaba gösterebilirim? Ef6 ile FitNesse kullanma

Şimdilik:
Makine.config dosyasındaki DbProviderFactories bölümünde "Effort.Provider" var. I) 'e (DbProviderFactories.GetFactoryClasses bakarken Effort.Provider gösteren adres ; ProcMon, onun arıyor ve Effort.dll bulma olduğunu gösterir.

Sonuç:

DbConnectionFactory.CreateTransient(); 
Effort.EntityConnectionFactory.CreateTransient(connectionString); 
DbProviderFactory dataFactory = DbProviderFactories.GetFactory(dt.Rows[5]); 

atmak da denenmiş

Effort.Exceptions.EffortException: The Effort library failed to register 

herhangi biri:
"Effort.Provider" Runner.exe.config arasında EntityFramework bölümünde fakat alamadım Bu çalışmak için. Sadece uygulamayı çöktü.
Kaldırma EF ve Effort.EF6 ve yeniden yükleme. Görünür bir etki yok. Effort.Provider.EffortProviderConfiguration.RegisterProvider() arama
; bir sınıf kurucusundan ve çeşitli başlangıç ​​konumlarından. Effort.Provider asla DbProviderFactories.GetFactoryClasses(); app.config DbProviderFactories bölümündeki "Effort.Provider" ile
, bu GetFactoryClasses sadece yanısıra machine.config gösterir. Kullanılması

:
Windows 10
.Net 4.6
VS 2016
EF 6.1.2

Kayıt olmalı mı (o 6.1.3, anlama geldiğini ne olduğundan emin değil yüklü diyor rağmen) bir DLL ya da bir şey? Bununla ilgili talimatlarda bir şey yok.

Detaylar:
App.config sen app.config dosyasında "EntityFramework" yapılandırma bölümünü kaydetmeniz gerekir gibi görünüyor

<configuration> 
    <runtime> 
     <loadFromRemoteSources enabled="true"/> 
    </runtime> 
    <system.data> 
     <DbProviderFactories> 
      <add name="Effort.Provider" invariant="Effort.Provider" description="Effort.Provider" type="Effort.Provider.EffortProviderFactory, Effort" /> 
     </DbProviderFactories> 
    </system.data> 
</configuration> 
+0

Effort.Provider gibi görünen Effort fabrikasına ulaşabileceğini düşündüm.EffortProviderFactory ve bir istisna atıyor, ancak bu durum böyle görünmüyor. – BWhite

cevap

6

.

<configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
</configSections> 
<entityFramework> 
    <providers> 
     <provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices,Effort" /> 
    </providers> 
</entityFramework> 

Ardından kodunuzda Effort bağlantısını oluşturun ve DbContext'inize aktarın. Zaten tip System.Data.Common.DbConnection bir nesne alan yapıcıya yoksa, bir tane oluşturun.

System.Data.Common.DbConnection connection = DbConnectionFactory.CreateTransient(); 
var context = new MyContext(connection); 

Ayrıca app.config dosyasında bir connectionString ayarlamayı da öneririm. Ben CreateTransient çağrısı sizin için bir bağlantı oluşturur inanıyorum ama test altında kodunuzu bir yere başka DBContext yaratır kodu bulunuyorsa, Çaba bu bilgileri almak için app.config için bakacağız. Aşağıda, bir testte tamamlanan tüm işlemlerin başka bir testi etkilememesi için geçici bir veritabanı oluşturacak bir örnek verilmiştir.

<add name="DefaultConnection" connectionString="Data Source=in-process;IsTransient=true" providerName="Effort.Provider" /> 
+0

Varsayılan Bağlantı parçası, sahip olmadığım tek bölümdür. Bunu deneyeceğim. Bu yönde çok zor bakmadım çünkü bunun farklı bir hata vereceğini, sınıfın oluşturulmasını engellemediğini varsaydım. Aslında konsola konsola yazıyorum. Hatan inanmak için her nedenim var. Sadece bulamıyor. Procmon, çaba kütüphanesini okuduğunu göstermesine rağmen. – BWhite

+0

Aynı sorun var, ama bu cevap onu çözmez. Başka fikirlerin var mı? – Jess

+1

Düşünebildiğim tek şey, app.config ' öğesi alt öğesi olarak aşağıdaki bölüme sahip olduğunuzdan emin olmaktır 'değişmez EF invariantname aynı olduğundan emin olun = "bellek db sağlayıcısı Çaba" değişmez = "Effort.Provider" type = "Effort.Provider.EffortProviderFactory, Çaba"/> sağlayıcılar bölümü –

İlgili konular