POCOとコンテキストを作成し、NuGet(v4.3.1)からプロジェクトにEFを追加しました。 app.configは、私が慣れ親しんだものと比べて少し新しく見えます。それはそこに、このセクションを持っていますどのようにしてコードを自動的に生成するのですか?
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<!--<parameter value="Data Source=|DataDirectory|Test.sdf; Integrated Security=True; MultipleActiveResultSets=True" />-->
</parameters>
</defaultConnectionFactory>
私は「パラメータ」をコメントアウトし、上部のタグの下に代わり、このような接続文字列のスニペットを追加しました:
<connectionStrings>
<add name="CodeFirstExampleContext" connectionString="Data Source=|DataDirectory|Test.sdf;Initial Catalog=CodeFirstExample;integrated security=True" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
以前は、SQL CEデータベースが自動生成されるような接続文字列を使用していました。しかし今はやっていません。代わりに、私は次の例外を受け取ります:
"プロバイダ情報をデータベースから取得中にエラーが発生しましたこれは、不正な接続文字列を使用してEntity Frameworkが原因で発生する可能性があります。詳細は内部例外をチェックして、 "
インナー例外は次のとおりです。
「プロバイダはProviderManifestToken文字列を返しませんでした。」ここで
は私のPOCOとコンテキストタイプです:
class Person
{
[Key]
public int Id { get; set; }
public string FName { get; set; }
public string LName { get; set; }
public int Age { get; set; }
}
class Context:DbContext
{
public DbSet<Person> People { get; set; }
}
私はここで何かが足りないのですか?
ありがとうございます!
を。私は以前にそれを実際に試してみました。私は、プロジェクトに新しい「データベースファイル」を追加し、ソースとしてSQL Server CEを選択しようとすると、それが生成された形式であることに気付きました。 – Cranialsurge
名前はDbContextの完全な名前と一致する必要があります。また、DbContextコンストラクタでname = CodeFirstExampleContextを使用する必要があります。http://petebarber.blogspot.com/2012/04/using-nunit-andentity-framework.htmlを参照してください。 – ErikEJ