【发布时间】:2012-04-25 16:48:07
【问题描述】:
我们正在尝试将我们的本地 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”,因为该集合已设置为 EntityCollection。
我们完全不知道如何解决这些问题,当谷歌搜索时,有几个线程告诉我们需要删除属性的虚拟访问修饰符。但是相同的代码可以在本地运行,不会出现任何此类问题,并且代码是由 EF 在模型的每次更新时自动生成的。在第二次机会中,我们还可以选择使用 SQLAzure 作为会话状态提供程序,但我们希望也存在同样的问题,因为数据在会话中存储时需要序列化。
http://social.msdn.microsoft.com/forums/en/adonetefx/thread/99d8d4a1-5ab1-42dc-b9db-5087be02162d https://blog.iannelson.uk/entity-framework-week-part-3-runtime-issues-encountered/
我们没有使用延迟加载,当我们从数据库更新模型时,类是由 EF 自动生成的。
【问题讨论】:
标签: session caching azure state azure-appfabric