我搜索了很多,经过了教程和提示,但它不会工作!
EF 5代码优先没有生成我的SQL Server CE 4数据库文件。
我有一个ASP.NET Web应用程序,我想使用代码优先方法生成数据库。
以下是我的模型类:
public class Class
{
[Key]
public int id { get; set; }
public bool isLecture { get; set; }
public int courseId { get; set; }
public virtual Course course { get; set; }
public int teacherId { get; set; }
public virtual Teacher teacher { get; set; }
}
public class Course
{
[Key]
public int id { get; set; }
public string name { get; set; }
public int semester { get; set; }
}
public class Teacher
{
public int id { get; set; }
public string name { get; set; }
public string lastName { get; set; }
}
以下是上下文:
public class MyContext : DbContext
{
public DbSet<Class> Classes { get; set; }
public DbSet<Teacher> Teachers { get; set; }
public DbSet<Course> Courses { get; set; }
}
以下是web.config
中的连接字符串:
<add name="MyContext"
connectionString="Data Source=|DataDirectory|\MyContext.sdf"
providerName="System.Data.SqlServerCe.4.0" />
这是global.asax.cs
:
protected void Application_Start()
{
Database.SetInitializer<MyContext>
(new DropCreateDatabaseIfModelChanges<MyContext>());
...
}
我在global.asax.cs
和w /和连接字符串中尝试了w /和w / o这些行。
应用程序加载并正常工作,但不创建数据库文件。我自己尝试创建.sdf
文件,因此可以先用EF代码填充,但它仍然是空的。
该项目是使用HotTowel模板制作的ASP.NET MVC 4,如果它意味着什么,我正在使用Visual Studio 2012。
解决:
global.asax.cs
中需要此代码:
MyContext context = new MyContext();
context.Database.Initialize(true);
答案 0 :(得分:0)
这对我有用 - 你需要连接工厂......
<configSections>...
</configSections>
<entityFramework>
<defaultConnectionFactory
type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>