0

我们正在尝试将我们的本地 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 -遇到的问题/

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

4

1 回答 1

0

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

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

于 2012-04-13T10:44:38.307 回答