使用EF4,是否可以获取生成的sql for Updates / Inserts而不是执行它…就像您可以在运行之前查看sql一样.
Decrement<Category>("ProductCount",categoryID); SetNull<Product>("CategoryID",productID);
哪个生成…
UPDATE Categories SET ProductCount = ProductCount - 1 WHERE CategoryID = @CategoryID; UPDATE Products SET CategoryID = NULL WHERE CategoryID = @ProductID;
我通常每个操作运行几个命令,所以在每个帮助函数调用时,sql被生成和存储.当我调用SaveChanges()时,所有命令都在一次运行.
解决方法
您可以在设计时使用sql Profiler获得它,但我认为您的意思是您希望在运行时.这里有一个例子,我发现如何做到这一点:
public static void WriteGeneratedsql(EntityCommand cmd) { cmd.Prepare(); IServiceProvider isp = (IServiceProvider)EntityProviderFactory.Instance; DbProviderServices mps = (DbProviderServices)isp.GetService(typeof(DbProviderServices)); EntityCommandDeFinition deFinition = (EntityCommandDeFinition)mps.CreateCommandDeFinition(cmd); int commandId = 1; foreach (string commandText in deFinition.MappedCommands) { Console.WriteLine("Generated Command {0}:",commandId); commandId++; Console.WriteLine(commandText); } }
发现here.
原文地址:https://www.jb51.cc/mssql/75895.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。