从 LINQ 迁移到 SQL 到 DocumentDB 的好方法是什么?
What is a good approach for migrating from LINQ to SQL to DocumentDB?
首先,简单介绍一下我们的情况。几年前,我开始了一个 ASP.NET MVC 项目,使用 LINQ to SQL 作为 DAL。作为当时该项目的唯一开发人员,我选择使用它是因为它在社区中得到了很好的支持,我需要更多地关注应用程序逻辑和 UI 设计,这样我才能将它推向市场。该策略对我们来说效果很好。
不过没过多久,我就需要在 Windows 服务中针对同一个数据存储编写一些多线程代码。 LINQ to SQL 遇到了各种跨线程问题。当时我仍然是唯一的开发人员并且需要快速启动此服务,因此我求助于使用 POCO 和企业库复制足够的 DAL 和模型。虽然不是具有重复模型和 DAL 功能的理想架构,但它运行良好并让我通过了。
那是五年前的事了。我们的项目取得了成功,以至于这种成功现在不是 LINQ 或 Enterprise Library 的责任,而是 SQL 本身的责任。现在,在任何人建议我们对我们的 SQL 数据库进行索引和所有这些检查之前,我们已经做到了。我们在合同上增加了一名 DBA,他为我们解决了问题。性能已恢复,一切正常。但问题是,它需要(在我们看来)对我们的业务模型和要求进行过于频繁的维护。
值得庆幸的是,微软已经加强了他们与 Azure 服务的竞争。我们(现在有两个开发人员)特别感兴趣的是 DocumentDB。在 SQL 中,我们有几个大的、平坦的、繁忙的表,当我们开始处理数据库维护的需要时,它们会给我们应用程序的某些区域带来严重的性能问题。我们根本没有资源用于持续维护。我们决定将我们的应用程序部分或全部迁移到 DocumentDB。内部的一些概念验证演示告诉我们,这对于我们拥有的应用程序类型来说是一个很好的举措。
如果您已经读到这里,谢谢,这是我的问题。将 LINQ 迁移到 SQL 类 并将生成的逻辑迁移到由 DocumentDB 支持的 DAL 的好方法是什么?值得庆幸的是,我很早就有先见之明,使用了 IRepository 方法,这样应用程序本身就不会受到影响,希望完全不会受到影响。我最关心的是 LINQ to SQL 设计界面为我编码的所有 "magic" CRUD 内容。我和我的其他开发人员当然了解如何编写我们自己的 DAL 代码,但我们需要一种快速且一致的方法,该方法考虑到应用程序被编码为预期从 LINQ 支持到 SQL 的行为。 =11=]
我的直觉是基本上取消 LINQ to SQL 五年前为我完成的所有生成代码,并将其与 LINQ to SQL 设计器分离,通过添加我们自己的 DAL DI 并从那里开始。我的另一个开发人员在这方面比我更先进,所以我有相当大的信心我们可以完成它。只是希望有人能帮助我们避免陷阱,这样我们就可以高效地完成这项工作。
正如 David Makogon 在评论中指出的那样,这个问题确实没有 "correct" 答案,因为它非常广泛且基于意见。我收到了广泛的建议,但我认为没有一个是明确的答案。
首先,简单介绍一下我们的情况。几年前,我开始了一个 ASP.NET MVC 项目,使用 LINQ to SQL 作为 DAL。作为当时该项目的唯一开发人员,我选择使用它是因为它在社区中得到了很好的支持,我需要更多地关注应用程序逻辑和 UI 设计,这样我才能将它推向市场。该策略对我们来说效果很好。
不过没过多久,我就需要在 Windows 服务中针对同一个数据存储编写一些多线程代码。 LINQ to SQL 遇到了各种跨线程问题。当时我仍然是唯一的开发人员并且需要快速启动此服务,因此我求助于使用 POCO 和企业库复制足够的 DAL 和模型。虽然不是具有重复模型和 DAL 功能的理想架构,但它运行良好并让我通过了。
那是五年前的事了。我们的项目取得了成功,以至于这种成功现在不是 LINQ 或 Enterprise Library 的责任,而是 SQL 本身的责任。现在,在任何人建议我们对我们的 SQL 数据库进行索引和所有这些检查之前,我们已经做到了。我们在合同上增加了一名 DBA,他为我们解决了问题。性能已恢复,一切正常。但问题是,它需要(在我们看来)对我们的业务模型和要求进行过于频繁的维护。
值得庆幸的是,微软已经加强了他们与 Azure 服务的竞争。我们(现在有两个开发人员)特别感兴趣的是 DocumentDB。在 SQL 中,我们有几个大的、平坦的、繁忙的表,当我们开始处理数据库维护的需要时,它们会给我们应用程序的某些区域带来严重的性能问题。我们根本没有资源用于持续维护。我们决定将我们的应用程序部分或全部迁移到 DocumentDB。内部的一些概念验证演示告诉我们,这对于我们拥有的应用程序类型来说是一个很好的举措。
如果您已经读到这里,谢谢,这是我的问题。将 LINQ 迁移到 SQL 类 并将生成的逻辑迁移到由 DocumentDB 支持的 DAL 的好方法是什么?值得庆幸的是,我很早就有先见之明,使用了 IRepository 方法,这样应用程序本身就不会受到影响,希望完全不会受到影响。我最关心的是 LINQ to SQL 设计界面为我编码的所有 "magic" CRUD 内容。我和我的其他开发人员当然了解如何编写我们自己的 DAL 代码,但我们需要一种快速且一致的方法,该方法考虑到应用程序被编码为预期从 LINQ 支持到 SQL 的行为。 =11=]
我的直觉是基本上取消 LINQ to SQL 五年前为我完成的所有生成代码,并将其与 LINQ to SQL 设计器分离,通过添加我们自己的 DAL DI 并从那里开始。我的另一个开发人员在这方面比我更先进,所以我有相当大的信心我们可以完成它。只是希望有人能帮助我们避免陷阱,这样我们就可以高效地完成这项工作。
正如 David Makogon 在评论中指出的那样,这个问题确实没有 "correct" 答案,因为它非常广泛且基于意见。我收到了广泛的建议,但我认为没有一个是明确的答案。