Linq 部分信任环境下的实体框架

Linq 部分信任环境下的实体框架,linq,entity-framework,linq-to-entities,partial-trust,Linq,Entity Framework,Linq To Entities,Partial Trust,我知道实体框架支持部分信任,我个人 它工作得很好,我测试了一下,很好。现在,如果你下载了附在我文章中关于这个主题的示例,它就不再在默认的部分信任下运行了 当我在故障位置“System.Data.Objects.LightweightCodeGenerator.ValidateSetterProperty(RuntimeMethodHandle setterMethodHandle,MethodInfo&setterMethodInfo,Type&realType)”上使用反射器深入System.

我知道实体框架支持部分信任,我个人

它工作得很好,我测试了一下,很好。现在,如果你下载了附在我文章中关于这个主题的示例,它就不再在默认的部分信任下运行了

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

因此,我转到我的中等信任配置并添加了另一个标志“UnmanagedCode” “”

我再次测试了应用程序,它运行良好

这到底是怎么回事?!它以前工作过,为什么现在不行呢!缺少了一些东西!!!System.Data.Entity在VS.NET 2008 SP1的几次频繁更新中是否发生了更改,最近一次更新是在去年8月进行的。因为在那之前,它工作得很好


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

听起来您已经有了对实体框架进行破坏性更改的确凿证据。我会去报告一个错误。如果您能确认更改是通过完成旧程序集而没有e“UnmanagedCode=true”属性。在错误报告中包括这两个版本


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

实体框架中的Diego Vega PM团队在实体框架论坛上对此问题做出了以下回应

你好,穆罕默德

我们意识到构建中存在一个问题 包括在Windows 7和Windows中 服务器2008 R2阻止实体 在介质中工作的框架 信任

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

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

希望这有帮助,迭戈


不确定这是否是bug,但我认为它是一个bug,但不确定它是从EntityFramework端还是Bcl端。我猜BCL是因为一些安全原因而改变的。在最后一个更新系统之前,RunTimeMeDoMeDeLe.Value属性没有[安全性权限(SurvivActudi.Link Kuffic,unMaundCudioCaldie=真)]。属性!我用reflector检查了它。现在它有[SecurityPermission(SecurityAction.LinkDemand,UnmanagedCode=true)],正如我在上一篇文章中提到的。这是一个问题,因为它现在停止了对部分信任的支持。