c# EF代码首先-创建数据库和添加数据

本文关键字:数据库 添加 数据 创建 EF 代码 | 更新日期: 2023-09-27 17:49:02

我想创建数据库并添加一些数据。我添加了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.Entity.SqlServerCompact.SqlCeProviderServices,EntityFramework。SqlServerCompact, Version=6.0.0.0, Culture=neutral,"System.Data.SqlServerCe.4.0"的PublicKeyToken=b77a5c561934e089ADO。NET提供程序无法加载。确保提供程序集对正在运行的应用程序可用。看到网址: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>());

问题在哪里?

c# EF代码首先-创建数据库和添加数据

我在例外情况下查看了链接,添加了nuget包EntityFramework。SqlServerCompact到我的解决方案,它帮助。

请检查连接字符串的提供者名称…

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>());

在VS包管理器控制台运行以下命令解决了我的问题:

安装包EntityFramework。SqlServerCompact pre