我使用mvc
相对较新,我使用scaffold controllers
和CRUD views
创建了一个包含多个模型的应用程序。在visual studio's local host
和localdb
上运行我的应用程序时,我的应用程序运行正常,但在尝试部署我的应用程序时,我收到错误,
处理您的请求时出错
在与我的模特相关的页面上。
我已在生产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>());
}
}
}
答案 0 :(得分:2)
在数据库上下文中指定数据库初始化程序
public StoreDBContext()
: base("DefaultConnection")
{
Database.SetInitializer<StoreDBContext>(new CreateDatabaseIfNotExists<StoreDBContext>());
}
还有其他一些初始化器。例如DropCreateDatabaseIfModelChanges
或DropCreateDatabaseAlways
(小心。这可以删除您的数据)或者您可以编写自己的初始化程序。