Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 有没有一种推荐的方法可以先用代码在共享主机上为数据库种子_Sql Server_Asp.net Mvc_Shared Hosting_Seeding - Fatal编程技术网

Sql server 有没有一种推荐的方法可以先用代码在共享主机上为数据库种子

Sql server 有没有一种推荐的方法可以先用代码在共享主机上为数据库种子,sql-server,asp.net-mvc,shared-hosting,seeding,Sql Server,Asp.net Mvc,Shared Hosting,Seeding,每次我将MVC站点部署到一个活动主机(通常是共享主机)上时,我都会在最初为数据库播种时遇到很多麻烦 我一直在尝试各种各样的东西,最终都能奏效,但花几个小时的反复试验并不罕见 我在共享主机上创建数据库。然后我用CreateDatabaseIfNotExists启动应用程序。它经常会给我一个无休止的“加载”页面 我可能会再次运行该应用程序,也许它已经创建了DB表,但没有填充任何DB表 使用任何DropCreateDatabase选项都不起作用-它没有权限(可能是因为在共享主机上) 冲洗,起泡,重复,

每次我将MVC站点部署到一个活动主机(通常是共享主机)上时,我都会在最初为数据库播种时遇到很多麻烦

我一直在尝试各种各样的东西,最终都能奏效,但花几个小时的反复试验并不罕见

我在共享主机上创建数据库。然后我用
CreateDatabaseIfNotExists
启动应用程序。它经常会给我一个无休止的“加载”页面

我可能会再次运行该应用程序,也许它已经创建了DB表,但没有填充任何DB表

使用任何
DropCreateDatabase
选项都不起作用-它没有权限(可能是因为在共享主机上)

冲洗,起泡,重复,直到最后看起来有效

是否有推荐的方法在共享主机上创建数据库并为其种子?你有什么建议可以让这项工作更容易些吗

更新

在Gobal.asax中:

Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());
Database.SetInitializer(新的ApplicationBinInitializer());
在初始值设定项中:

public class ApplicationDbInitializer : CreateDatabaseIfNotExists<ApplicationDbContext>
{
    protected override void Seed(ApplicationDbContext db)
    {
        var dataSeeder = new DataSeeder(db);
        dataSeeder.SeedAll();
        base.Seed(db);
    }
}
公共类ApplicationBinInitializer:CreateDatabaseIfNotExists
{
受保护的覆盖无效种子(ApplicationDbContext db)
{
var数据种子=新数据种子(db);
dataSeeder.SeedAll();
基部种子(db);
}
}

种子设定只是标准代码,比如:
db.Objects.AddRange(List)

显示一些代码,特别是定义数据库初始值设定项的代码和调用
Seed()方法的代码。我认为代码还可以(著名的最后一句话)。在开发过程中一切都很好,只是当我在共享主机上将DB切换到一个时,我遇到了麻烦。这可能有点不了解我,但这听起来更像是主机的连接问题。我想不出为什么在主机上播种和在本地播种在.NET级别上会有什么不同……除非这个故事还有更多。当你说它最终会起作用时,是不是采取了一些一致性的步骤使它最终起作用?是的,我原以为它会是一样的。我试过几个不同的主机,总是有类似的问题。这就是为什么我想知道我是否遗漏了什么,或者做错了什么。当它最终工作时,它使用一个新创建的DB并使用
CreateIfNotExists
选项。(但我不明白为什么第一次设置不起作用)。通常需要2到3次才能起作用。