当我尝试运行该行时: MyDBContext.Database.Log = Console.Write 编译器微笑着告诉我我不知道自己在做什么......
该应用程序将无法编译,因为该行和该行上的错误是: 重载解析失败,因为没有可访问的Write接受此数量的参数。
这是有道理的。 'Console.Write'不返回任何内容,我将其设置为System.Action(Of String)
这似乎有点半烤了。 我尝试了很多方法来修复它,包括委托,以及一些其他“新的可能性”将这个从上下文中移除应该提供但仍然没有骰子。 我错过了什么?它是在最后一刻发生了变化吗?
我在解决方案中有两个大的edmx文件(一个连接到SQL Server,另一个连接到Oracle),所有这些都很有效。 这是我的版本号,如果这可以帮助。 EntityFramework 6.0.0.0(文件夹是... \ EntityFramework.6.1.3 \ lib \ net45 \ EntityFramework.dll) EntityFramework.SqlServer 6.0.0.0(文件夹是... \ EntityFramework.6.1.3 \ lib \ net45 \ EntityFramework.dll) Oracle.ManagedDataAccess.EntityFramework 6.121.2.0
我创建了一个工具,可以将L2S'mycontext.log'的输出粘贴到其中,然后解析它并使用变量创建SSMS就绪SQL ......它非常有用。这是我最喜欢的L2S功能之一。 请帮助我理解为什么这不起作用。 提前谢谢。
答案 0 :(得分:0)
这项技术对我有用:
public override int SaveChanges()
{
SetIStateInfo();
#if DEBUG
Database.Log = s => Debug.WriteLine(s);
#endif
return base.SaveChanges();
}
答案 1 :(得分:0)
嗯,答案是研究Action(T) Delegate,它向我展示了如何做到这一点。
#If DEBUG Then
myctx.Database.Log = AddressOf Console.Write
#End If
只需要AddressOf,我又回来了。