当Azure Appfabric Cache服务用作会话状态提供程序时,EF动态代理会出现问题

时间:2012-04-13 10:02:39

标签: session caching azure state azure-appfabric

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

当我尝试将会话状态配置为appfabric缓存时,我们正在运行与Entity框架相关的这些问题,请参阅错误号2.首先我们得到此错误否1.解决此问题我们将类作为[ DataContract]并解决了问题。

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

错误2。 该物业' AdXXXXXX'类型' CaXXXXX_9FDDBE5B2C99F9C5DE2E0DCD2E8CC77D2CB59220D1A3413E91AF5A2B6A23026D'无法设置,因为集合已设置为EntityCollection。

我们完全迷失了如何解决这些问题,并且当用Google搜索时,我们需要删除属性的虚拟访问修饰符。但是相同的代码可以解决任何问题,例如内部部署,并且代码是在模型的每次更新时由EF自动生成的。我们还有其他选择在第二次机会中将SQLAzure作为会话状态提供程序,但我们希望也存在相同的问题,因为数据在存储在会话中时需要序列化。

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

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

1 个答案:

答案 0 :(得分:0)

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

参考:Code First adding to collections? How to use Code First with repositories?