EF的CodeFirst模型修改时,服务器上的数据库怎么更新

EF的CodeFirst模型修改时,服务器上的数据库怎么更新,第1张

选择开始菜单中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打开【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份验证建立连接。

在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点

右键单击【数据库】节点,从d出来的快捷菜单中选择【新建数据库】命令。

执行上述 *** 作后,会d出【新建数据库】对话框。在对话框、左侧有3个选项,分别是【常规】、【选项】和【文件组】。完成这三个选项中的设置会后,就完成了数据库的创建工作,

在【数据库名称】文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。

在【所有者】文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。

在【数据库文件】列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的【添加】、【删除】按钮添加或删除数据库文件。

切换到【选项页】、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。

切换到【文件组】页,在这里可以添加或删除文件组。

完成以上 *** 作后,单击【确定】按钮关闭【新建数据库】对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再【对象资源管理器】窗口看到。

seed函数内容添加的时候,你的codefirst 代码没有更新,所以Seed函数没有被调用。

Migration只检查数据库的机构有没有发生变化,如果发生了变化,

它会调用Seed方法重新初始化数据库。

但是如果数据库已经存在而且与你的当前代码一致,Migration就不会再调用seed方法了。

问题在于你的:

oldinstance = instance这句上。

EF的跟踪机制比想像的要复杂,oldinstance由于是dacEntities返回(查询到)的,是被打上跟踪标记的,你直接让oldinstance指向另的对象,那么oldinstance就“失去控制”了,你应该直接在oldinstance上进行你的更改 *** 作,然后savechanges,不用设置oldinstance的state,因为当你修改oldinstance的属性时,跟踪机制会自动知道你改变了oldinstance的属性,将它的状态设为modified。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6460800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-22
下一篇 2023-03-22

发表评论

登录后才能评论

评论列表(0条)

保存