【发布时间】:2013-10-08 11:17:00
【问题描述】:
我们有一个相当大的使用 LINQ to SQL 的 ASP.NET MVC 项目,我们正在迁移到 Windows Azure。
现在,我们需要序列化对象以存储在 Azure 分布式缓存中,并在 .dbml 文件中将“序列化模式”设置为“单向”,从而使用DataContract 和DataMember 属性自动装饰生成的类和属性,这似乎是推荐的方式。但是,这会使 LINQ to SQL 尚未加载的任何关系在序列化并保存为 null 时丢失。
考虑到以下几点,首选的处理方式是什么:
- 如前所述,这是一个相当大型项目,生成的 *.designer.cs 文件接近 1.5MB
- 完全禁用延迟加载很可能是一个大问题 性能下降由于许多深厚的阶级关系。
- 更改 ORM 工具是我们正在考虑的事情,但在切换平台的同时这样做可能是一件坏事。
如果这归结为以某种方式手动指定要在整个项目中序列化的对象和关系;使用 protobuf-net 之类的东西来获得额外的性能提升可能不是一个巨大的进步。
【问题讨论】:
-
我的意见:不要使用生成的实体进行序列化/rpc。构建一个您可以控制且符合要求的单独传输模型。您正在强制单个模型服务于两个不同的用例,从而在许多不同的地方造成麻烦。重用实体类节省的工作量是负数。
标签: c# linq-to-sql serialization azure protobuf-net