gpt4 book ai didi

entity-framework - Entity Framework 代码首先不使用 VS 2012 创建表

转载 作者:行者123 更新时间:2023-12-04 14:00:54 25 4
gpt4 key购买 nike

我在 Visual Studio 2012 下有一个 MVC4 Web api 项目,我想首先使用 EF 6.0.2 代码创建和管理数据库。实际上,该解决方案涉及四个项目,即,

  • OnlineShop.Application(用户界面)
  • OnlineShop.Model 专用于 POCO 类(class)
  • OnlineShop.Test 用于单元测试和
  • OnlineShop.Core 具有 UnitOfWork、GenericRepository 和
    DatabaseContext 类

  • 提到的每个项目都包含一个 app.config,其中包含与 web.config 相同的连接。

    问题:运行项目(在 Debug模式下)后,将创建数据库,如服务器资源管理器中所示(在 Visual Studio 2012 中)。但是,它没有 table !!!

    数据库上下文类也如下:
     public class DatabaseContext : DbContext
    {
    public DatabaseContext() : base("OnlineShopDb")
    {
    Database.SetInitializer(new MigrateDatabaseToLatestVersion<DatabaseContext, Configuration>());
    }

    //public static void InitializeDatabase()
    //{
    // using (var context = new DatabaseContext())
    // {
    // context.Database.CreateIfNotExists();
    // Database.SetInitializer(new MigrateDatabaseToLatestVersion<DatabaseContext, Configuration>());
    // }
    //}

    public DbSet<Person> Persons { get; set; }
    public DbSet<Customer> Customers { get; set; }
    public DbSet<User> Users { get; set; }
    public DbSet<Audit> Audits { get; set; }
    public DbSet<RoleGroup> RoleGroups { get; set; }
    public DbSet<Role> Roles { get; set; }
    public DbSet<UserInRole> UserInRoles { get; set; }
    public DbSet<Order> Orders { get; set; }
    public DbSet<OrderDetail> OrderDetails { get; set; }
    public DbSet<Product> Products { get; set; }
    public DbSet<ProductCategory> ProductCategories { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
    base.OnModelCreating(modelBuilder);
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
    modelBuilder.Entity<Person>().Map<User>(c => c.Requires("Discriminator").HasValue("User"));
    }
    }

    我在网上冲浪了很多,找到了很多关于 EF 代码优先方法的文章和示例,但不幸的是无法处理这个糟糕的问题!

    如果有人可以帮助我,我将不胜感激。

    最佳答案

    Entity Framework 代码在您尝试访问它之前不会首先创建您的数据库,因此运行您的项目并尝试获取或插入一些记录到您的数据库。

    另一个有用的提示是,如果您更改模型,默认情况下 EF 将抛出异常,您将不得不删除当前数据库,以便 EF 可以创建一个新数据库。

    或者我建议您更改默认行为 this way

    关于entity-framework - Entity Framework 代码首先不使用 VS 2012 创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21914242/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com