gpt4 book ai didi

c# - 在复杂的大型 SQL 数据库上创建清晰的抽象层

转载 作者:行者123 更新时间:2023-11-30 16:26:19 25 4
gpt4 key购买 nike

我在工作中编写的几乎所有应用程序都从中央 MSSQL 数据库获取数据。这个数据库有大约 70 个表,平均每个表有 25 列左右。该数据库已经发展了 5-10 年(我不完全确定)并且充满了特质和怪癖。在命名等方面以及表和列名称中的大小写和语言混合时,外键的实现不规范。

我无法重组数据库本身,因为它会破坏办公室中大多数人日常工作所需应用程序的大量向后兼容性。

我几乎完全使用 LINQ2SQL 与数据库交互,它工作正常,但总是需要大量手动连接表,无论是在某些数据库存储库中还是在编码时“内联”。所以我最终决定我必须做点什么来一劳永逸地减轻与这个巨兽一起工作的痛苦。这最好包括实现清晰的命名方案、一劳永逸地将相关表与外键正确连接等。

我能看到的三个路由是:

  1. 在 SQL 中创建大量 View 、存储过程和函数,以简化我与数据库的交互。这显然具有可在多种语言中使用的好处,而不是在例如中实现的解决方案。 C#。我在这里看到的最大缺点是,正确地执行此操作可能会花费很多时间,而且当我有一段时间没有查看 SQL 查询时,一年后服务起来会有点困难。我还需要在我的应用程序中实现另一个数据库抽象步骤,因为我不想直接使用数据库调用(在这种情况下,抽象上的抽象似乎很糟糕,但也许我错了?)

  2. 继续我的 LINQ2SQL 之路,但创建一个一劳永逸的存储库类,它仅在抽象调用中隐藏所有基础表。这个想法在开发时间、维护和单点抽象方面似乎更可行。

  3. 使用一些 EF4 逆向工程魔法,使用设计器连接相关的外键并重命名表类以符合我的口味。

如果您能提供有关如何/可以如何完成此操作的任何意见,以及您可能拥有的任何推荐阅读 Material ,我们将不胜感激。

最佳答案

我们的数据库情况非常相似。我们走的是 EF 路线,但我们使用的是 Code First。我知道当您的数据库已经存在时使用 Code First 听起来很奇怪,但由于表的大小和表的数量,尝试在设计器中完成所有操作是不可行的。

您可以使用 Entity Framework Power Tools 中的“逆向工程代码优先”选项从数据库中生成您需要的一切。

关于c# - 在复杂的大型 SQL 数据库上创建清晰的抽象层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com