【问题标题】:create database tables in a modular approach of the asp.net mvc framework以 asp.net mvc 框架的模块化方法创建数据库表
【发布时间】:2014-05-16 22:49:21
【问题描述】:

我正在尝试扩展 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 and EF CodeFirst - How? 中给出的示例

如果我在 mvc 应用程序中使用它(默认使用 EF,对吗?) OnModelCreating 函数会运行,设置函数也会运行,但它既不创建数据库也不创建表。最后我得到一个错误,因为应用程序在尝试选择数据时无法连接到数据库。这是合乎逻辑的,因为没有数据库。

我基本上想要的是在 MVC 应用程序中使用 mef-plugins-and-ef-codefirst 解决方案。我错过了什么吗?是否有另一种方法可以在 MVC/EF 的代码中手动创建表?

【问题讨论】:

    标签: asp.net-mvc entity-framework-4 repository-pattern dbcontext


    【解决方案1】:

    好吧,我自己找到了解决方案:

    我将此添加到控制器的索引中:

    Context context = new Context();
                context.Database.CreateIfNotExists();
    

    并将 CarContext 中的 public List 改为 public DbSet。

    它现在用表格制作数据库,我通过 CarContext 获取数据。

    【讨论】:

      猜你喜欢
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      相关资源
      最近更新 更多