【问题标题】:EF Code First Database Not Generated using MVC3EF Code First 数据库未使用 MVC3 生成
【发布时间】:2013-05-25 13:16:45
【问题描述】:

我正在使用 EF Code First 和 MVC3 开发应用程序。该解决方案包含三个 pprojects; ProjectName.Model 仅涉及 POCO 类,ProjectName.App 涉及默认模型文件夹中的 MVC3 Web 项目(由 MVC 自己创建的)被删除,并且 ProjectName.Repository 包含一个通用存储库、UnitOfWork 以及 DatabaseContext 类问题是,EF5 生成数据库但没有包含表:

public class DatabaseContext : DbContext
{
    public DatabaseContext() : base("name=MahalehMaDB") { }
    //
    public DbSet<Man> Mans { get; set; }
    public DbSet<City> Cities { get; set; }
    public DbSet<Role> Roles { get; set; }
    public DbSet<RoleGroup> RoleGroups { get; set; }
    public DbSet<Service> Services { get; set; }
    public DbSet<ServiceRole> ServiceRoles { get; set; }
    public DbSet<ServiceDetails> ServiceDetails { get; set; }
    public DbSet<ActionProvider> ActionProviders { get; set; }
    public DbSet<RoleGroupUser> RoleGroupUsers { get; set; }
    //
    public static void InitializeDatabase()
    {
        using (DatabaseContext context = new DatabaseContext())
        {
            context.Database.CreateIfNotExists();
            Database.SetInitializer(new MigrateDatabaseToLatestVersion<DatabaseContext, Configuration>());
        }
    }
}

<connectionStrings>
<add name="MahalehMaDB"
     connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MahalehDatabase;Integrated Security=True;MultipleActiveResultSets=True;App=EntityFramework"
     providerName="System.Data.SqlClient" />

我很困惑是什么阻止了 EF5 使用其表生成数据库。 请注意,InitializeDatabase 方法是在 Global.asax 文件的 Application_Start 方法中调用的。 InitializeDatabase 方法有问题吗?控制器类也实现不完整,莫非是原因?一直在网上冲浪,但无法处理,因此决定来这里!

有没有人想办法解决这个问题?如果信息不足,请告诉我。

请多多关照...

【问题讨论】:

  • 我认为您的连接字符串的数据源属性可能不正确。请仔细检查。

标签: c# asp.net asp.net-mvc-3 ef-code-first


【解决方案1】:

使用此代码:public DatabaseContext() : base("MahalehMaDB") { }

此代码是连接字符串名称的无效值:base("name:MahalehMaDB") { }

【讨论】:

  • @user2394196 .\SQLEXPRESS 可以吗?
  • 是的。对了,我叫阿里,也是波斯人?
  • 是的,请检查您的连接字符串,我认为您的连接字符串有问题
  • 我认为您的代码是正确的,但是当您在构造函数中使用 this:MahalehMaDB 时,您应该为连接字符串使用相同的名称
【解决方案2】:
public Context(): base("MahalehMaDB"){ }

在 web.config 中:

<add name="MahalehMaDB" connectionString="Data Source=yourservername;
  InitialCatalog=database;
  Integrated Security=true"providerName="System.Data.SqlClient"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多