我创建了一个db Context类,并按照Scott Guthrie的Code First Development with Entity Framework 4中的说明在我的web.config文件中添加了一个连接字符串。我是从测试方法运行它。我收到了几个运行测试的数据库错误,但是当我最终清理了类以便测试成功时,我仍然在App_data文件夹中没有数据库。
我将Database.CreateIfNotExists()添加到dbContext构造函数中,但仍然没有sdf文件。谁知道我做错了什么?
答案 0 :(得分:23)
对于要自动创建的数据库,连接字符串名称必须与DbContext子类名称(带名称空间)完全相同。
EG。假设您的数据库类是这样的:
namespace MyNamespace
{
public class FooDb : DbContext
{
public DbSet<XXX> ABC{ get; set; }
}
}
您的连接字符串应如下所示:
<connectionStrings>
<add name="MyNamespace.FooDb" connectionString="Data Source=|DataDirectory|MyNamespace.FooDb.sdf" providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
答案 1 :(得分:3)
检查SQL Server Management Studio - &gt; 。\ sqlexpress
当我没有指定连接字符串时,这就是CF放置所有数据库的地方。
答案 2 :(得分:2)
请参阅此处,了解如何使用EF 4.1和SQL CE NuGet包(或显然是新的MVC 3项目)自动创建.sdf:
长话短说:创建一个空的App_Data文件夹 - 自动创建sdf,但前提是它所在的文件夹存在。
答案 3 :(得分:0)
确保您的dbcontext使用正确的连接字符串 有点像这样的东西
public class DBContext : IdentityDbContext<ApplicationUser>
{
public DBContext ()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
}
在web.config中
<add name="DefaultConnection" connectionString="Server=....;Connection Timeout=300;" providerName="System.Data.SqlClient" />