Julia Lerman经常将她的解决方案分解,因此她在自己的类库中使用EF,然后可以通过控制台应用程序对其进行处理。 我也喜欢当EF与我的MVC项目分离时,但是这样做没有多少帮助。感觉EF7被认为只嵌入在MVC6中。
当我将我的解决方案拆分为EF7库,控制台应用程序和MVC6项目,然后想要启用迁移,我必须包含一个startup.cs(它不需要包含任何东西 - 只是存在)和带有连接字符串的project.json。如果我不这样做,我就无法运行命令:dnx ef add migration InitialDatabase
拆分EF和MVC是否仍然可以,还是我必须重新考虑我的逻辑?
获取灵感和评论 - 这是我的DBContext:
namespace Model
{
public class ModelCnt : IdentityDbContext<ApplicationUser>
{
//Include Cofiguration so I can get connectionstring fram appsettings.json
public IConfigurationRoot Configuration { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
//Initialize configuration:
Configuration = new ConfigurationBuilder().AddEnvironmentVariables().Build();
//Add connectionstring saved within enviroment variable:
optionsBuilder.UseSqlServer(Configuration["ConnectionString"]);
}
}
}
/// <summary>Is necesary for the Migration to work</summary>
public class Startup
{
public void Configure() { }
}
答案 0 :(得分:0)
是的,您应该沿着这条路线前往所有非平凡的项目,这样做非常适合SOLID和DRY校长。这样做不仅可以让您按照建议从解决方案中的其他项目访问数据层,而且还可以为将来使用该库的其他解决方案铺平道路。
考虑到MVC 6是如此新颖,我无法找到任何n层应用程序的例子。但是older versions的原则仍然适用。几天前,在Microsoft Connect 2015上,Scott Hanselman演示了一个 Health Clinic 应用程序,该应用程序希望将数据层放在一个单独的项目中。 This发布说明他们打算很快在网上获得该演示的代码。
与此同时,你可以试试自己。使用MVC 6模板化项目创建解决方案。然后为Data层创建一个新的类库(Package),并将EntityFramework引用从MVC6项目的project.json移动到Data项目的project.json。如上所述移动ModelCnt
,并从MVC6项目引用Data项目。 ef
dnx命令仍然可以通过MVC6项目直接使用,但是如果你想从那里访问它,你可以将"ef": "EntityFramework.Commands"
粘贴到你的数据项目的project.json中。