3 つのプロジェクトがあります。
- Company.Domain (クラス ライブラリ)
- Company.PublicWebsite (MVC3 Web アプリケーション)
- Company.InternalWebsite (MVC3 Web アプリケーション)
2 つの Web サイト プロジェクトは を参照していCompany.Domain
ます。
私たちの EF 5DbContext
はCompany.Domain.Data.EntityFramework
次のように動作します。
using System.Data.Entity;
using Company.Domain.Data.EntityFramework.Entities;
namespace Company.Domain.Data.EntityFramework.
{
public class CompanyEntities : DbContext
{
public DbSet<Notification> Notifications { get; set; }
public DbSet<Report> Reports { get; set; }
public DbSet<ReportSection> ReportSections { get; set; }
public DbSet<ReportPage> ReportPages { get; set; }
// brevity brevity
}
}
過去に移行を有効にし、ツールを正常に使用していたため、現在問題が発生している理由がわかりません。私たちの移行設定は次のように存在しCompany.Domain.Data.EntityFramework.Migrations
、次のようになります。
namespace Company.Domain.Data.EntityFramework.Migrations
{
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
using Company.Domain.Data.EntityFramework;
public class Configuration : DbMigrationsConfiguration<CompanyEntities>
{
public Configuration()
{
MigrationsDirectory = @"Data\EntityFramework\Migrations";
AutomaticMigrationsEnabled = false;
}
protected override void Seed(CompanyEntities context)
{
// empty at the moment
}
}
}
次にApp.config
、プロジェクトのルートにファイルがあり、Company.Domain
次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
<connectionStrings>
<add name="CompanyEntities" providerName="System.Data.SqlClient" connectionString="Data Source=devsql;Initial Catalog=CompanyEntities;uid=XXXXX;pwd=XXXXX;MultipleActiveResultSets=True;" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
私たちのデータベースは、ネットワーク上の別のサーバーにあります。SQL Server Management Studio で接続でき、アプリケーションは実行時に問題なく接続できます。ただし、実行しようとすると、add-migration
またはupdate-database
次のエラーが発生します。
System.Data.ProviderIncompatibleException: データベースからプロバイダー情報を取得中にエラーが発生しました。これは、不適切な接続文字列を使用する Entity Framework が原因である可能性があります。内部例外で詳細を確認し、接続文字列が正しいことを確認してください。---> System.Data.ProviderIncompatibleException: プロバイダーは ProviderManifestToken 文字列を返しませんでした。---> System.Data.SqlClient.SqlException: SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。
モデルへの変更を元に戻し、update-database
「データベースは最新の移行中です」と表示されるかどうかを確認するために実行しましたが、それでも上記のエラーが発生します。接続文字列に何度も注ぎましたApp.config
。移行が接続されない理由がわかりませんが、両方の Web サイト プロジェクトは実行時に問題なく動作します。移行は過去に機能していました。__MigrationHistory
以下は、データベースの表にあるものと比較したソリューション エクスプローラーの移行です。
実行して最新であることを知らせる必要があるように見えますがupdate-database
、代わりにそのエラーが発生します。
私が理解しているように、移行コマンドを実行しているとき、移行は 2 つの Web サイト プロジェクトに注意を払うべきではありませんが、念のため、それらの Web.config ファイルにも注意を払いました。接続文字列は App.config と同じです。
編集:
プロジェクトからEF 5パッケージを完全にアンインストールして削除し、再インストールすることさえ試みました。同じ問題 >:(