我创建了一个Windows窗体应用程序:
我正在使用EntityFramework 4.1和Code First Approach以及SQL Compact 4.0数据库。
我在用于连接数据库的类库项目的app.config文件中创建了一个连接字符串。问题是连接字符串显然对数据库创建没有影响。我的意思是所有程序都能正常运行,但即使我为数据库指定了一个位置,这也没有任何效果!
我是否在正确的app.config中写作? 我是否需要以特定方式初始化我的DbContext类? (今天我没有在构造函数中传递任何连接字符串)
DbContext类:
public class MyDB : DbContext
{
public DbSet<ContactPerson> ContactPersons { get; set; }
public DbSet<Customer> Customers { get; set; }
public DbSet<Project> Projects { get; set; }
public DbSet<Quotation> Quotations { get; set; }
public MyDB()
: base("MyDatabase")
{
}
}
App.config连接字符串:
<add name="MyDatabase" connectionString="Data Source=MyDB.sdf"
providerName="System.Data.SqlServerCE.4.0">
答案 0 :(得分:6)
您需要将app.config放在应用程序(.exe)项目中。 app.config文件应该在这篇博客文章中(区分大小写):http://erikej.blogspot.com/2011/04/saving-images-to-sql-server-compact.html,名称应该是MyDB,而不是MyDatabase ......
答案 1 :(得分:0)
您的连接字符串错误,应该是:
add name =“MyDB”connectionString =“Data Source = MyDB.sdf”providerName =“System.Data.SqlServerCE.4.0”
请注意,Name必须与您的上下文类的名称匹配才能自动检测连接。
答案 2 :(得分:0)
您是否尝试过种植数据库?您必须注入一些数据,以便EF创建数据库,如果您不这样做,模型定义就像意图声明。
public class ContextInitializer : DropCreateDatabaseIfModelChanges<DBContext>
{
protected override void Seed(DBContext context)
{
context.Add(new Customers()); //add a Customer, for example
}
}
然后查看Debug / Release文件夹并检查数据库是否正确创建。
微软有一篇文章更详细地解释了所有这些过程,他们有一个新的教程取代了“Magic Unicorn”教程,请参阅http://msdn.microsoft.com/en-US/data/jj193542