Entity Framework в среде частичного доверия
Я знаю, что Entity Framework поддерживает частичное доверие, я лично писал об этом
Это работало нормально, я проверил это, и это было хорошо. Теперь, если вы загрузите примеры, прикрепленные к моему сообщению о предмете, он больше не будет работать с частичным доверием по умолчанию!!!
Когда я копался в сборке System.Data.Entity с использованием рефлектора на позиции сбоя "System.Data.Objects.LightweightCodeGenerator.ValidateSetterProperty(RuntimeMethodHandle setterMethodHandle, MethodInfo& setterMethodInfo, свойство Type& realType" я заметил, что оно вызывает Runtime, и у меня возникает следующее свойство: атрибут при получении доступа "[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)]"
Поэтому я перешел к своей конфигурации среднего доверия и добавил еще один флаг "UnmanagedCode" ""
Я снова тестирую приложение, и оно работало нормально.
Теперь, о чем это все?! Раньше это работало, так почему бы и нет? Там чего-то не хватает!!! Изменялся ли System.Data.Entity во время нескольких частых обновлений VS.NET 2008 SP1, а последнее было сделано в августе 2009 года. Потому что до этой даты все работало нормально.
Поэтому я был бы признателен, если бы кто-нибудь мог прояснить это и направить меня, если я ошибаюсь, или я что-то упускаю.
2 ответа
Диего Вега, руководитель проекта Entity Framework, ответил на этот вопрос на форумах Entity Framework следующим
Привет Мухаммед,
Нам известно о проблеме в сборке, включенной в Windows 7 и Windows Server 2008 R2, которая не позволяет Entity Framework работать в Medium Trust.
Как версия mscoree.dll, так и сообщение об исключении, которое вы описываете, соответствуют сценарию.
Мы ожидаем, что у нас будет решение до массового внедрения Windows 7 и Windows Server 2008 R2, но в то же время рекомендуется продолжать использовать Windows Server 2008 или Windows Vista для тестирования и развертывания приложений на основе EF в Medium Trust.
Надеюсь, это поможет, Диего
Похоже, у вас есть окончательное доказательство серьезных изменений в Entity Framework. Я бы пошел на http://connect.microsoft.com/ и сообщить об ошибке. Вероятно, было бы полезно, если бы вы могли подтвердить, что изменение было сделано путем поиска старой сборки без атрибута "UnmanagedCode=true". Включите обе версии в отчет об ошибке.
Я, кстати, только что посмотрел на RuntimeMethodHandle в Reflector. Метод доступа get для Value возвращает "this.m_ptr;" и не имеет атрибутов украшений. Это в mscorlib, моя версия 2.0.0.0 (я использую.NET 3.5 в моей системе разработки.)