将 Azure 应用结构缓存服务用作会话状态提供程序时,EF 动态代理出现问题



我们正在尝试将我们的本地SAAS应用程序迁移到Windows Azure,并且我们已经专门为模块使用了大量实体框架。作为迁移部分,我们尝试分阶段迁移和测试应用程序。 我们正在尝试使用 Azure appfabric 缓存服务作为会话状态提供程序。

当我尝试将会话状态配置为 appfabric 缓存时,我们遇到了与实体框架相关的这些问题,请参阅错误 2。 首先,我们得到了错误 1 号。为了解决这个问题,我们将类作为 [DataContract] 并且问题已解决。

错误编号 1。System.Runtime.Serialization.InvalidDataContractException:类型"XX.XX.XXX"无法序列化。请考虑使用 DataContractAttribute 属性标记它,并使用 DataMemberAttribute 属性标记要序列化的所有成员。 如果类型是集合,请考虑使用 CollectionDataContractAttribute 标记它。 有关其他受支持的类型,请参阅 Microsoft .NET Framework 文档。

错误编号 2。无法设置类型"CaXXXXX_9FDDBE5B2C99F9C5DE2E0DCD2E8CC77D2CB59220D1A3413E91AF5A2B6A23026D"上的属性"AdXXXXXX",因为集合已设置为实体集合。

我们完全不知道如何解决这些问题,当谷歌搜索几个线程时,告诉我们需要删除属性的虚拟访问修饰符。 但是,相同的代码在本地不会出现此类问题,并且代码由 EF 在每次更新模型时自动生成。 我们还有其他选择,可以在第二次机会中将 SQLAzure 作为会话状态提供程序,但我们希望也可能存在相同的问题,因为数据存储在会话中时需要序列化。

http://social.msdn.microsoft.com/forums/en/adonetefx/thread/99d8d4a1-5ab1-42dc-b9db-5087be02162dhttps://blog.iannelson.uk/entity-framework-week-part-3-runtime-issues-encountered/

我们不使用延迟加载,当我们从数据库更新模型时,EF 会自动生成类。

您能否尝试从除用于延迟加载/导航属性的属性之外的所有属性中删除 virtual 关键字(即:从所有本机类型中删除它)?

参考:代码首先添加到集合?如何在存储库中使用代码优先?

相关内容

  • 没有找到相关文章

最新更新