为什么我的数据库表没有生成,我的连接字符串是否正确? asp.net mvc

时间:2017-07-12 14:15:31

标签: c# sql asp.net asp.net-mvc

我使用mvc相对较新,我使用scaffold controllersCRUD views创建了一个包含多个模型的应用程序。在visual studio's local hostlocaldb上运行我的应用程序时,我的应用程序运行正常,但在尝试部署我的应用程序时,我收到错误,

  

处理您的请求时出错

在与我的模特相关的页面上。

我已在生产iis服务器上部署了我的项目,并在ms sql server上设置了用户登录和数据库。我的项目有正确的连接字符串与sql服务器交互,但是在观察数据库时,我的表项与我的项目模型没有被创建 - 这是我收到的错误的路由原因。

有人能够建议为什么我的桌子没有被创建;下面是我的代码示例,请注意我也使用asp.net身份功能,这些表也没有创建:

我的一个模特的例子:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace newwebsite.Models
{
    public class Store
    {
    public int ID { get; set; }
    public string ItemName { get; set; }
    public string ItemImageName { get; set; }
    public decimal ItemPrice { get; set; }
    public string ItemDescription { get; set; }
    public string ItemFeatures { get; set; }
}
public class StoreDBContext : DbContext
{
    public DbSet<Store> Blog { get; set; }

    public StoreDBContext()
        : base("DefaultConnection")
    {
    }

    public static StoreDBContext Create()
    {
        return new StoreDBContext();
    }
}
}

我的连接字符串示例:

<add name="DefaultConnection" connectionString="Data Source='MSSqlServerIP'; Initial Catalog=NewWebsite2017; User ID=NewWebsite2017; Password=*****" providerName="System.Data.SqlClient" />

当我部署我的项目时,所有视图都正常工作,这表明我的控制器对这些视图很好。无论数据库中的数据应该显示在哪里,我都是纯粹的错误。我相信这些错误是由于我的表没有被创建,但我不确定为什么会这样。

更新 我已按如下方式编辑了模型(以及相应的其他模型),但仍然没有运气。

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace newwebsite.Models
{
public class Store
{
    public int ID { get; set; }
    public string ItemName { get; set; }
    public string ItemImageName { get; set; }
    public decimal ItemPrice { get; set; }
    public string ItemDescription { get; set; }
    public string ItemFeatures { get; set; }
}
public class StoreDBContext : DbContext
{
    public DbSet<Store> Blog { get; set; }

    public StoreDBContext()
: base("DefaultConnection")
{
        Database.SetInitializer<StoreDBContext>(new    CreateDatabaseIfNotExists<StoreDBContext>());
    }

}

}

1 个答案:

答案 0 :(得分:2)

在数据库上下文中指定数据库初始化程序

public StoreDBContext()
    : base("DefaultConnection")
{
   Database.SetInitializer<StoreDBContext>(new CreateDatabaseIfNotExists<StoreDBContext>());
}

还有其他一些初始化器。例如DropCreateDatabaseIfModelChangesDropCreateDatabaseAlways(小心。这可以删除您的数据)或者您可以编写自己的初始化程序。