【问题标题】:EF dynamic proxies issues when Azure Appfabric Cache service is used as session state provider将 Azure Appfabric 缓存服务用作会话状态提供程序时,EF 动态代理问题
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 我们没有使用延迟加载,当我们从数据库更新模型时,类是由 EF 自动生成的。我们对 EF 生成的类没有任何控制权。还是我们需要手动删除虚拟属性。
    • 不,我不会手动删除 virtual 关键字。您能否尝试关闭更改跟踪:context.SomeTable.MergeOption = MergeOption.NoTracking;
    • 我们在哪里可以在表格上添加选项 MergeOption.NoTracking,基本上我们尝试通过添加属性,但仍然遇到同样的问题。
    • 我们可以通过将 DataContract 和 DataMembers 添加到自动生成的类的成员而不删除 virtual 关键字来解决上述问题,但仍然找不到将实体对象存储在Azure Appfabric 使用会话状态。当方法返回集合时,我们收到错误类型“System.Collections.Generic.ICollection`1[SB.Mpm.Entity.Client]”无法序列化。
    猜你喜欢
    • 2012-02-17
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 2013-01-04
    • 2013-07-21
    • 2013-05-27
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多