我们有一个相当大的使用 LINQ to SQL 的 ASP.NET MVC 项目,我们正在迁移到 Windows Azure。
现在,我们需要序列化对象以存储在 Azure 分布式缓存中,并在 .dbml 文件中将“序列化模式”设置为“单向”,从而自动使用和属性来装饰生成的类和DataContract
属性DataMember
,似乎是推荐的方法。但是,这会使 LINQ to SQL 尚未加载的任何关系在序列化并保存为null
.
考虑到以下几点,首选的处理方式是什么:
- 如前所述,这是一个相当大的项目,生成的 *.designer.cs 文件接近 1.5MB
- 由于许多深层的类关系,完全禁用延迟加载很可能会对 性能造成很大影响。
- 更改 ORM 工具是我们正在考虑的事情,但在切换平台的同时这样做可能是一件坏事。
如果这归结为以某种方式手动指定要在整个项目中序列化的对象和关系;使用protobuf-net 之类的东西来获得一些额外的性能提升可能不是一个巨大的进步。