【发布时间】:2014-07-30 18:10:25
【问题描述】:
我有 2 个项目的一个解决方案:
我通过 nuget 为它们添加了 Entity Framework 6 和 Sql server compact。
<packages>
<package id="EntityFramework" version="6.1.1" targetFramework="net45" />
<package id="EntityFramework.SqlServerCompact" version="6.1.1" targetFramework="net45" />
<package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net45" />
</packages>
我将此连接字符串添加到 DAL 的 Web 配置中:
<connectionStrings>
<remove name="connectionString"/>
<add name="connectionString" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|Database.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
实体框架配置(我只将contexts 添加到BreezeDemo.DAL):
<entityFramework>
<contexts>
<context type="BreezeDemo.DAL.MyDbContext, BreezeDemo.DAL">
<databaseInitializer type="BreezeDemo.DAL.SchoolInitializer, BreezeDemo.DAL" />
</context>
</contexts>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>
</entityFramework>
这是我在上下文中的代码:
public class MyDbContext : DbContext
{
public MyDbContext()
: base("connectionString")
{
Database.SetInitializer<MyDbContext>(new SchoolInitializer());
}
public DbSet<Student> Students { get; set; }
public DbSet<Enrollment> Enrollments { get; set; }
public DbSet<Course> Courses { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
当我尝试学生列表时:
public class StudentRepository
{
MyDbContext dal = new MyDbContext();
public List<Student> GetAll()
{
return dal.Students.ToList();
}
}
EF 代码第一次运行,但它没有在 web 配置中使用我的连接字符串。它在BreezeDemo\App_Data 中创建数据库文件名“connectionString”。我在 web config 中的连接想要创建 db 文件名:BreezeDemo.DAL\App_Data 中的“数据库”。
我错过了什么吗?请帮助我让它正常工作。
【问题讨论】:
-
您运行 BreezeDemo 项目,但连接字符串位于 BreezeDemo.DAL 项目中?
标签: entity-framework sql-server-ce-4 entity-framework-6.1