2016-01-12 7 views
11

Effortフレームワーク(バージョン1.1.4)を使用して私のDB層をテストする際に問題が発生しています。作業単位のテストエンティティのフレームワーク6.1.3 DB-first

私はエンティティフレームワーク6.1.3を使用してDBレイヤーを持っています。モデルはデータベースファーストアプローチを使用して作成され、モデルを記述する*.edmxファイルがあります。

私はこのような努力でユニットテストで使用される追加のコンストラクタを公開する部分クラスを作成しました:

public partial class Entities 
{ 
    public Entities(DbConnection connection) 
     : base(connection, true) 
    { 
    } 
} 

シンプルなユニットテストは、次のようになります。

private Entities CreateContext() 
    { 
     //var connectionString = ConfigurationManager.ConnectionStrings["Entities"].ConnectionString; 
     //var connection = Effort.EntityConnectionFactory.CreateTransient(connectionString); 
     //return new Entities(connection as DbConnection); 

     var connection = Effort.EntityConnectionFactory.CreatePersistent("name=Entities"); 
     var context = new Entities(connection); 
     return context; 
    } 

    [TestMethod] 
    public void Testing_Effort_Integration() 
    { 
     using (var context = CreateContext()) 
     { 
      var entity = context.TableEntity.FirstOrDefault(i=> i.Id); 
      Assert.IsNotNull(entity); 
     } 
    } 

ときI単体テストを実行すると、行の例外がスローされます。

var connection = Effort.EntityConnectionFactory.CreatePersistent("name=Entities"); 

{"プロバイダーはProviderManifestインスタンスを返しませんでした。"} InnerExceptionメッセージ:{"ストレージバージョンを判断できませんでした。有効な ストレージ接続またはバージョンのヒントが必要です。 "}、私が発見した

他の記事から*.edmxファイル内ProviderManifestToken属性に変更することを提案『『2008』を』2012。これは、問題を解決するようですここで初めてコンテキストを使用しようとしたときではなく、私の別の例外を与える:「タイプ の プロバイダファクトリのプロバイダ名を特定できません

var entity = context.TableEntity.FirstOrDefault(i=> i.Id); 

非サポート例外System.Data.EntityCli ent.EntityProviderFactory '。 ADO.NETプロバイダがアプリケーション設定にインストールまたは登録されていることを確認します。

この問題を解決する方法を知っている人は誰でも、私はエンティティフレームワーク6.1.3 DBを最初に使用してEffortを使用できますか?

EF4とEF5で作成されたDBテストのレイヤーをDB最初の方法でテストするために、Effort(バージョン1.1.4)を使用できました。これがEFバージョンが興味...

答えて

17

私の同僚が私の問題を解決しました!

「Effort.EF6」ナゲットパッケージの代わりに「Effort」ナゲットパッケージを使用していたようです。

<system.data> 
    <DbProviderFactories> 
     <add name="Effort.Provider" invariant="Effort.Provider" description="Effort.Provider" type="Effort.Provider.EffortProviderFactory,Effort" /> 
    </DbProviderFactories> 
    </system.data> 

    <entityFramework> 
    <providers> 
     <provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices, Effort" /> 
    </providers> 
    </entityFramework> 

そして私も努力プロバイダを登録するには私のユニットテストのためのセットアップでコールが含ま:他をアンインストールしてインストールした後、私はまた、タグで私のapp.configを更新しなければならなかった

[SetUp] 
    public void Setup() 
    { 
     EffortProviderConfiguration.RegisterProvider(); 
    } 

これは私の問題を解決しました。うまくいけば、それは他人にいくらか助けを与えることができます!

関連する問題