0

単体テストで TLPContext を作成すると、このページの下部で例外が発生します。

単体テストでこれを行いました:

DbContext context = new TLPContext();
context.Database.CreateIfNotExists();

これは正しいアプローチではありませんか?

接続文字列/プロバイダーの何が問題になっていますか?

私はこれに従いました:http://www.thereforesystems.com/turn-on-msdtc-windows-7/

しかし、再起動後は役に立ちませんでした。

私のユニットテストプロジェクトのapp.configファイルです:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
  <connectionStrings>
    <add name="TLPContext" providerName="System.Data.SqlClient" connectionString="Data Source=LISA\SQLEXPRESS;Initial Catalog=TLPTEST;Integrated Security=True;Pooling=False;"/>
  </connectionStrings>
</configuration>

それは私のDbContextです。データベースを作成するのに十分なはずですが、テーブルは作成できません...

public class TLPContext : DbContext
{

}

それは私が得る例外です:

単体テストのセットアップで TLPContext インスタンスを作成すると、次のようになります。

Test 'TLP.DataAccess.UnitTests.GenericRepositoryTests.Test' failed: System.Data.ProviderIncompatibleException : An error occurred while getting provider information from the database. This can be caused by Entity Framework using an incorrect connection string. Check the inner exceptions for details and ensure that the connection string is correct.
---- System.Data.ProviderIncompatibleException : Der Anbieter hat keine ProviderManifestToken-Zeichenfolge zurückgegeben.
-------- System.Data.SqlClient.SqlException : MSDTC on server 'LISA\SQLEXPRESS' is unavailable.
    at System.Data.Entity.ModelConfiguration.Utilities.DbProviderServicesExtensions.GetProviderManifestTokenChecked(DbProviderServices providerServices, DbConnection connection)
    at System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest)
4

1 に答える 1

0

接続文字列を使用しない場合は、データベース サーバーが自動的に検出され (SQLEXPRESS が検索されます)、プロジェクトの名前に基づいてデータベースが作成されます。

欠けているのは、接続文字列またはその名前を指定することです。これは、DbContext のコンストラクターのいずれかを使用して実現できます。

TLPContext(string connectionStringOrName) : DbContext(connectionStringOrName) {}

これが役立つことを願っています!

于 2013-02-20T21:37:36.913 に答える