2
A
回答
7
实体框架还原与备份代码的ORM - 对象关系映射 - 旨在处理与单一的实体和/或实体的短名单的相互作用。它既不是为批量操作设计的,也不是服务器管理框架。所以不 - 我不认为你可以使用实体框架来做到这一点 - 这不是它的工作。
用于作业的适当的工具!要么使用SQL Server Management Studio来处理备份/恢复 - 或者必须以编程方式执行此操作,请使用专门用于这些类型作业的SMO(服务器管理对象)
5
对于有此问题的其他朋友.. ..
使用ExecuteSqlCommand可以备份EF 6+中的数据库。
例如:(此代码中创建您的数据库备份,我测试过这一点。)
string dbname = db.Database.Connection.Database;
string sqlCommand = @"BACKUP DATABASE [{0}] TO DISK = N'{1}' WITH NOFORMAT, NOINIT, NAME = N'MyAir-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10";
db.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, string.Format(sqlCommand,dbname, "Amin9999999999999"));
备份保存在C:\ Program Files文件\ Microsoft SQL Server的\ MSSQL10.SQLEXPRESS \ MSSQL \备份
裁判=>https://entityframework.codeplex.com/discussions/454994
但我不推荐使用这种方法!
我强烈建议使用下面的文章中:
http://www.c-sharpcorner.com/Blogs/8679/backup-and-restore-the-database-in-Asp-Net-web-application.aspx
0
这应该让你去的恢复方面:
void LoadDB(
System.Data.Entity.DbContext context,
string backup_filename,
string orig_mdf, // the original LogicalName name of the data (also called the MDF) file within the backup file
string orig_ldf, // the original LogicalName name of the log (also called the LDF) file within the backup file
string new_database_name
)
{
var database_dir = System.IO.Path.GetTempPath();
var temp_mdf = $"{database_dir}{new_database_name}.mdf";
var temp_ldf = $"{database_dir}{new_database_name}.ldf";
var query = @"RESTORE DATABASE @new_database_name FROM DISK = @backup_filename
WITH MOVE @orig_mdf TO @temp_mdf,
MOVE @orig_ldf TO @temp_ldf,
REPLACE;";
context.Database.ExecuteSqlCommand(
// Do not use a transaction for this query so we can load without getting an exception:
// "cannot perform a backup or restore operation within a transaction"
TransactionalBehavior.DoNotEnsureTransaction,
query,
new[] {
new SqlParameter("@backup_filename", backup_filename),
new SqlParameter("@database_dir", database_dir),
new SqlParameter("@new_database_name", new_database_name),
new SqlParameter("@orig_mdf", orig_mdf),
new SqlParameter("@orig_ldf", orig_ldf),
new SqlParameter("@temp_mdf", temp_mdf),
new SqlParameter("@temp_ldf", temp_ldf),
}
);
}
如果你不知道他们事前中,MDF和LDF LogicalName值可以从一个像这样的查询来获得manually或programmatically:
RESTORE FILELISTONLY FROM DISK @backup_filename
相关问题
- 1. 实体框架代码优先 - 备份和恢复的DbContext
- 2. 使用实体框架从数据库备份/恢复
- 3. 备份(和恢复)Plone实例
- 4. 备份数据库mdf&实体框架
- 5. 实体框架恢复更改
- 6. 在实体框架中恢复表格
- 7. 实体框架恢复更改
- 8. 恢复使用实体框架
- 9. SQL备份和恢复完整备份
- 10. Android备份和恢复
- 11. 备份和恢复列值
- 12. TortoiseSVN备份和恢复
- 13. Cassandra备份和恢复
- 14. Drupal备份和恢复
- 15. 备份和恢复DynamoDb表
- 16. MySql备份和恢复
- 17. ActiveMQ - ReplicatedLevelDB - 备份和恢复
- 18. MySQL备份和恢复
- 19. Jenkins:备份和恢复
- 20. Oracle备份和恢复
- 21. SQL Server备份和恢复
- 22. IIS ISSUE备份和恢复
- 23. Django:备份和恢复
- 24. RavenDb备份和恢复
- 25. Ckan备份和恢复
- 26. MySQL的备份和恢复
- 27. 从谷歌应用引擎备份和恢复实体
- 28. 实体框架和重复
- 29. 实体框架和复用
- 30. 实体框架 - 在分离实体后恢复导航属性