ASP.NET EF5 代码优先不创建 SQL Server CE 数据库
Posted
技术标签:
【中文标题】ASP.NET EF5 代码优先不创建 SQL Server CE 数据库【英文标题】:ASP.NET EF5 code-first not creating SQL Server CE database 【发布时间】:2013-04-25 11:13:44 【问题描述】:我进行了广泛搜索,浏览了教程和技巧,但它不起作用!
EF 5 code-first 不会生成我的 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/o 这些行以及 w/ 和 w/o 连接字符串。
应用程序加载并运行,但只是没有创建数据库文件。我尝试自己创建 .sdf
文件,因此它可以由 EF 代码优先填充,但它仍然是空的。
该项目是用 HotTowel 模板制作的 ASP.NET MVC 4,如果它意味着什么,我正在使用 Visual Studio 2012。
已解决:
需要global.asax.cs
中的此代码:
MyContext context = new MyContext();
context.Database.Initialize(true);
【问题讨论】:
【参考方案1】:这对我有用 - 你需要连接工厂...
<configSections>...
</configSections>
<entityFramework>
<defaultConnectionFactory
type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
【讨论】:
仍然没有数据库文件。在数据连接下,服务器资源管理器有一个到 MyContex.sdf 的链接断开,当我尝试打开它时,它说:The database file cannot be found. Check the path to the database. [ Data Source = c:\...path...\MyProject\SekretarskiModul\App_Data\MyContext.sdf ]
以上是关于ASP.NET EF5 代码优先不创建 SQL Server CE 数据库的主要内容,如果未能解决你的问题,请参考以下文章
使用带有实体框架代码优先和 ASP.NET MVC 3 和 mvc miniprofiler 的 SQL Server CE 时出现问题