C#通过EntityFramework执行SQL Server数据库备份语句报错:无法在事务内执行备份或还原操作

原因分析

EF中的Database.ExecuteSqlCommand执行sql命令时自动将sql命名包装为一个事务,然而SQL Server数据库中不允许在事务内执行备份或还原操作,发生冲突,故报错。

解决办法

Database.ExecuteSqlCommand方法有两个重载,使用另外一个重载方法

Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior transactionalBehavior, string sql, params object[] parameters);

将第一个形参System.Data.Entity.TransactionalBehavior transactionalBehavior设置为System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction,问题解决。

官方对System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction的解释为:
如果存在现有事务,则使用它,否则在没有事务的情况下执行命令或查询。

你可能感兴趣的:(数据库,c#)