1

我知道实体框架支持部分信任,我个人在博客上写过

它工作正常,我测试了它,它很好。现在,如果您下载附在我关于该主题的帖子中的示例,它将不再在默认的部分信任下运行!!!

当我在故障位置使用反射器挖掘 System.Data.Entity 程序集“System.Data.Objects.LightweightCodeGenerator.ValidateSetterProperty(RuntimeMethodHandle setterMethodHandle, MethodInfo& setterMethodInfo, Type& realType”时,我注意到它调用了 RuntimeMethodHandle.Value 属性,该属性具有以下内容获取访问器“[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)]”的属性

所以我去了我的中等信任配置并添加了另一个标志“UnmanagedCode”“”

我再次测试应用程序,它工作正常。

这到底是怎么回事?!它以前可以工作,为什么现在不行!有什么东西不见了!!!System.Data.Entity 在 VS.NET 2008 SP1 的几次频繁更新中是否发生了变化,最新的更新是在 2009 年 8 月制作的。因为在那之前,它运行良好。

因此,如果有人能澄清这一点并指导我,如果我错了,或者我遗漏了什么,我将不胜感激。

4

2 回答 2

1

听起来您有明确的证据证明实体框架发生了重大变化。我会去http://connect.microsoft.com/并报告一个错误。如果您可以通过finidng 没有“UnmanagedCode=true”属性的旧程序集来确认已进行更改,这可能会有所帮助。在错误报告中包含这两个版本。

顺便说一句,我只是在 Reflector 中查看了 RuntimeMethodHandle。Value 的 get 访问器返回“this.m_ptr;” 并且没有属性装饰。它在 mscorlib 中,我的版本是 2.0.0.0(我在我的开发系统上运行 .NET 3.5。)

于 2009-09-15T13:54:14.463 回答
1

Entity Framework 团队的 Diego Vega PM 在 Entity Framework 论坛中对此问题做出了以下回应

你好,穆罕默德,

我们知道 Windows 7 和 Windows Server 2008 R2 中包含的构建中存在一个问题,该问题会阻止实体框架在中等信任下工作。

mscoree.dll 的版本和您描述的异常消息都与场景匹配。

我们希望在 Windows 7 和 Windows Server 2008 R2 被主流采用之前有一个解决方案,但同时建议继续使用 Windows Server 2008 或 Windows Vista 来测试和部署基于中等信任的 EF 应用程序。

希望这会有所帮助,迭戈

于 2009-09-17T13:56:51.433 回答