SQL Azure意外删除/重新创建数据库
几个小时以来,我一直在为这件事挠头,但似乎不知道出了什么问题SQL Azure意外删除/重新创建数据库,azure,ef-code-first,azure-sql-database,entity-framework-migrations,Azure,Ef Code First,Azure Sql Database,Entity Framework Migrations,几个小时以来,我一直在为这件事挠头,但似乎不知道出了什么问题 这是我们的项目基本设置: 具有ASP.NET成员资格的MVC 3.0项目 实体框架4.3,代码优先方法 本地环境:附加了2个MDF数据库文件的本地SQL Server(aspnet.MDF+entities.MDF) 服务器环境:Windows Azure+2 SQL Azure数据库(aspnet和实体) 以下是我们所做的: 创建本地和远程数据库,修改web.config以在调试模式下使用SQLEXPRESS连接字符串,在
这是我们的项目基本设置:
- 具有ASP.NET成员资格的MVC 3.0项目
- 实体框架4.3,代码优先方法
- 本地环境:附加了2个MDF数据库文件的本地SQL Server(aspnet.MDF+entities.MDF)
- 服务器环境:Windows Azure+2 SQL Azure数据库(aspnet和实体)
以下是我们所做的:
- 创建本地和远程数据库,修改web.config以在调试模式下使用SQLEXPRESS连接字符串,在发布模式下使用SQL Azure连接字符串
- 创建了一个
类扩展SampleData
,使用DropCreateDatabaseAlways
方法对数据进行种子设定Seed
- 使用了
在System.Data.Entity.Database.SetInitializer(new Models.SampleData())
将数据种子植入我们的数据库应用程序中启动
- 本地运行应用程序-已创建表并为其设定种子,一切正常
- 已部署并运行远程应用程序-已创建并播种了表,一切正常
- 添加了预处理器指令,以停止在远程Azure环境中的每个应用程序启动时销毁实体数据库:
#if DEBUG System.Data.Entity.Database.SetInitializer(new Models.SampleData()); #else System.Data.Entity.Database.SetInitializer<Entities>(null); #endif
- 快速检查后,我们的
表中有超类
和Foo
列。因为Foo1
有两个子类超类
和子类1
,每个子类都有一个子类2
属性,所以逻辑性很强。在我们的例子中,Foo
为NULL,但是Foo
有一个Foo1
值。所以问题不在于数据库,而在于我们的模型和数据库之间的联系似乎已经丢失了。鉴别器逻辑已损坏int32
- 尽管我们从未对SQL Azure实体数据库执行过任何迁移,但该数据库现在有一个
表\u MigrationHistory
表有一条记录:\u MigrationHistory
MigrationID: 201204102350574_InitialCreate CreatedOn: 4/10/2012 11:50:57 PM Model: <Binary data> ProductVersion: 4.3.1
MigrationID:201204102350574\u InitialCreate CreatedOn:4/10/2012 11:50:57下午 型号: 产品版本:4.3.1
- 看看其他表,当迁移发生时,大多数表都是空的。只有最初使用
作为种子的表保持不变SampleData
- 通过SQL Azure管理门户登录,我们的实体数据库显示以下创建日期:4/10/2012 23:50:55
这是我们的理解
- 出于某种原因,SQLAzure删除并重新创建了我们的数据库
- 在这个过程中创建了_MigrationHistory表,注册了一个起点,以便在将来的迁移中测试模型
以下是我们的问题
- 谁/什么触发了数据库删除/重新创建
- 既然
hasApplication\u Start
System.data.Entity.Database.SetInitializer(null),EF如何重新播种我们的样本数据代码>
编辑:查看可能出现的错误,我们注意到在这个SQL Azure中有一件事我们不尊重:在创建数据库后,我们没有从SQL Azure实体数据库连接字符串中删除
PersistSecurityInfo
。我不明白为什么它会导致这个问题,但仍然值得一提…不管怎样,我们找到了问题的原因。如果有人想知道:自从添加预处理器指令以来,我们还没有进行任何Azure部署。MS必须已重新启动我们的VM所在的机器,并且新VM使用see data重新创建了数据库
经验教训:总是频繁部署Azure。不管怎样,找到问题的原因。如果有人想知道:自从添加预处理器指令以来,我们还没有进行任何Azure部署。MS必须已重新启动我们的VM所在的机器,并且新VM使用see data重新创建了数据库
经验教训:经常进行Azure部署。我也有类似的经验,当我登录sql管理门户时,我的数据库消失了。我仍然不知道那是怎么发生的。在我的应用程序发布后,我必须小心……我也有过类似的经历,当我登录sql管理门户时,我的数据库消失了。我仍然不知道那是怎么发生的。在我的应用程序发布后,我必须小心。。。
MigrationID: 201204102350574_InitialCreate
CreatedOn: 4/10/2012 11:50:57 PM
Model: <Binary data>
ProductVersion: 4.3.1