EF 4.1を使用しており、通常のEFedmxファイルを作成しています。DBから生成します。
生成されたら、右クリックして[コード生成項目の追加]を選択し、新しいクラスを生成して、代わりにDbContextを使用します。テンプレートのDbContextジェネレーターを使用します。
すべてが正常に動作します。
次に、コンテキストを照会しようとします。
using (var context = new PasDBEntities())
{
var client=context.ClientCompanies.SingleOrDefault(_=>_.ID==clientCompanyId);
if(client!=null)
コンテキストの新しいインスタンスを作成するのに問題はありませんが、クエリを実行しようとすると問題が発生します。UnintentionalCodeFirstExceptionでスタックします。そして、エラーが発生します:
{"データベースファーストおよびモデルファースト開発用のT4テンプレートを使用して生成されたコードは、コードファーストモードで使用すると正しく機能しない場合があります。データベースファーストまたはモデルファーストを引き続き使用するには、実行中のアプリケーションの構成ファイルでEntityFramework接続文字列が指定されていることを確認してください。 。データベースファーストまたはモデルファーストから生成されたこれらのクラスをコードファーストで使用するには、属性またはDbModelBuilder APIを使用して追加の構成を追加してから、この例外をスローするコードを削除します。 "}
最初にコードを使用したくありませんが、コードを「オフ」にできるかどうか、または問題がどこにあるのかわかりません。
参考までに、これが私のコンストラクターです...
public partial class PasDBEntities : DbContext
{
public PasDBEntities()
: base("PasDBEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
...および接続文字列:
<connectionStrings>
<add name="PasDBEntities"
connectionString="metadata=res://*/PasDB.csdl|
res://*/PasDB.ssdl|
res://*/PasDB.msl;
provider=System.Data.SqlClient;
provider connection string="
data source=localhost;
initial catalog=PasDB;
integrated security=True;
pooling=False;
multipleactiveresultsets=True;
App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>