我正在尝试扩展 Asp.NET MVC 框架,以便制作模块。我希望能够制作单独的迷你 mvc 项目,将它们组合在 mvc-app 中并构建/安装整个东西。这样,我可以将所需的模块选择到一个应用程序中。
要制作迷你 MVC 项目,我想使用这种方法:http ://www.wynia.org/wordpress/2008/12/aspnet-mvc-plugins/
现在我正在尝试使用多个 dbcontexts 构建数据库。我使用 IRepository 模式来实现这一点。首先,我使用这种模式创建了一个实体框架 (4.3) 项目,并且能够使用 OnModelCreating 事件创建一个完整的数据库。
public class Context : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// /* Use MEF to load all plugins. I'll use the mock interface IPlugin */
List<IContext> Contexts = new List<IContext>();
Contexts.Add(new BikeContext());
Contexts.Add(new CarContext());
Contexts.Equals(new BlogContext());
foreach (IContext context in Contexts)
context.Setup(modelBuilder);
}
}
这是一个运行安装程序并在每个子上下文中的示例函数:
public class CarContext : Context, IContext
{
public List<Car> Cars { get; set; }
void IContext.Setup(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Car>().ToTable("Cars");
modelBuilder.Entity<Car>().HasKey(car => car.Id);
}
}
此存储库来自MEF Plugins 和 EF CodeFirst - How?
如果我在 mvc 应用程序中使用它(默认使用 EF,对吗?) OnModelCreating 函数会运行,设置函数也会运行,但它既不创建数据库也不创建表。最后我得到一个错误,因为应用程序在尝试选择数据时无法连接到数据库。这是合乎逻辑的,因为没有数据库。
我基本上想要的是在 MVC 应用程序中使用 mef-plugins-and-ef-codefirst 解决方案。我错过了什么吗?是否有另一种方法可以在 MVC/EF 的代码中手动创建表?