3

データベースを作成してデータを追加したい。EFを追加しましたが、最初にコードを使用したいと思います。私はこれらのクラスを持っています:

public class Question
{
    public bool Sort { get; set; }
    public int QuestionID { get; set; }
    public int Level { get; set; }
    public string Description { get; set; }
    public string Answer1 { get; set; }
    public string Answer2 { get; set; }
    public string Answer3 { get; set; }
    public string Answer4 { get; set; }
    public string RightAnswer { get; set; }
    public bool Show { get; set; }
}

public class QuestionDb : DbContext
{
    public DbSet<Question> Questions { get; set; }
}

これは私の接続文字列です:

<add name="ConvertCSVtoSQL.QuestionDb" connectionString="Data Source=|DataDirectory|ConvertCSVtoSQL.QuestionDb.sdf"
      providerName="System.Data.SqlServerCe.4.0" />

今、私はこのようなデータベースを作成しています:

using (var db = new QuestionDb())
        {

            foreach (var question in questions)
            {
                db.Questions.Add(question);
            }
            db.SaveChanges();
        }

データベースを作成しますが、追加したい質問にデータがある場合、エラーが発生します。

'System.Data.SqlServerCe.4.0'ADO.NETプロバイダーのEntityFrameworkプロバイダータイプ'System.Data.Entity.SqlServerCompact.SqlCeProviderServices、EntityFramework.SqlServerCompact、Version = 6.0.0.0、Culture = neutral、PublicKeyToken =b77a5c561934e089'ロードされません。実行中のアプリケーションでプロバイダーアセンブリが使用可能であることを確認してください。詳細については 、http: //go.microsoft.com/fwlink/?LinkId=260882を参照してください。

イニシャライザーをいくつか追加しようとしましたが、役に立ちませんでした。

Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0",@"C:\Path\To\",@"Data Source=C:\Path\To\DbFile.sdf");
Database.SetInitializer(new CreateDatabaseIfNotExists<QuestionDb>());

では、どこに問題があるのでしょうか。

4

3 に答える 3

2

例外としてリンクを確認し、ソリューションにnugetパッケージEntityFramework.SqlServerCompactを追加すると役立ちます。

于 2012-12-22T17:39:44.040 に答える
1

接続文字列のプロバイダー名を確認してください...

http://weblogs.asp.net/scottgu/archive/2010/12/08/announcing-entity-framework-code-first-ctp5-release.aspx

これがお役に立てば幸いです

Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0",@"C:\\Path\To\\",@"Data Source=C:\\Path\\To\\DbFile.sdf");
Database.SetInitializer(new CreateDatabaseIfNotExists<QuestionDb>());
于 2012-12-21T08:49:15.990 に答える
1

VSパッケージマネージャーコンソールで次のコマンドを実行すると、問題が解決しました。

Install-Package EntityFramework.SqlServerCompact -Pre

于 2013-02-19T22:04:19.233 に答える