我想创建数据库并添加一些数据。我添加了 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 提供程序的实体框架提供程序类型 '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>());
那么问题出在哪里?