gpt4 book ai didi

c# - ORM架构

转载 作者:行者123 更新时间:2023-11-29 01:07:29 25 4
gpt4 key购买 nike

背景:我有一个规模不大的项目(2 个 ASP.NET Web 应用程序,每个应用程序大约 10 页)。这两个 Web 应用程序共享很多后端要求,特别是处理一组大约 50 个表的能力。他们都访问了相同的 RDBMS,它始终是 MySQL。

问题:不久前,一个功能丰富的大型 ORM 库 (Subsonic) 被添加到项目中,但事实证明它太多了。它太大了,零件太多了,开销也太大了。一些由 Subsonic 生成的集合需要 1 分钟以上的时间来创建,而完成相同的原始内联查询(我知道不好)需要 ~2 秒。问题不只是 Subsonic,NHibernate 和其他 ORM 工具只是太大,有太多永远不会使用的功能。这些项目的范围也永远不会变得很大。此外,数据库不可知论是不必要的,因为我们永远不会离开 MySQL,而且除了内部之外,没有人会使用这个工具。

显然,内联查询是错误的、不安全的和错误的。 Linq 也不是一个选项。因此,我需要一些小型自定义 ORM 工具来打包到库中。我的想法是包括:

  • 基础是 Table 类,其构造函数仅提供数据库名称和表名称
  • Table 类会公开一些方法
  • public DataRow Record(string primaryKeyValue)//获取单个记录
  • public DataRowCollection Records(string whereClauseOrRangeOfKeyValues)//获取记录集合
  • public bool Save()//通过更新/插入任何已更改的行来保存数据库的当前状态;不确定维护哪些记录有问题的最佳方法
  • public bool Loaded(string primaryKeyValue)//判断给定记录是否存在
  • public DataRowCollection Query(string mysqlQuery);//运行特定的自定义查询
  • 私下里几乎只有几样东西:一种 sanitizer 、一种进行选择的方法、一种进行更新插入的方法,除此之外别无其他

也许 StackOverflow 的汇集知识可以突出此基本设置的缺点或提供改进。提前致谢。

编辑:一个限制条件(目前不确定它有多稳固)是我没有使用预构建的库。 Subsonic 关闭了高层,以至于任何第三方实用程序都可能被拒绝。因此,它更像是一种架构选择,而不是实用程序选择。

最佳答案

在开始制作自己的工具之前,您应该检查 Micro ORM,例如:

而且那里几乎没有其他人。

关于c# - ORM架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9667856/

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