代码之家  ›  专栏  ›  技术社区  ›  Aaron M

改进我的数据访问层

  •  2
  • Aaron M  · 技术社区  · 17 年前

    我在重新编写软件中的数据访问层(如果你可以这样称呼它的话)方面投入了大量精力。这确实是我第一个使用的项目,而且事情是以不恰当的方式完成的。

    在我的项目中,所有被提取的数据都存储在arraylist中。一些数据从arraylist转换为类型化对象,然后再放回arraylist。

    我真的不确定是否应该在对象和读写数据库的类之间创建一个层。该层将获取来自数据库的数据,将其键入适当的对象,如果返回多个对象,则返回这些对象的列表。这是一个好方法吗?

    另外,如果这是一种很好的方法,我应该如何从数据库返回数据?我目前正在使用SqlDataReader.read,并填充一个数组列表。我确信这不是最好的方法,我只是不清楚如何改进。

    之所以这样做,是因为我希望将所有数据库操作集中到几个类中,而不是将它们分散到项目中的所有类中

    5 回复  |  直到 17 年前
        1
  •  5
  •   Martin Murphy    17 年前

    你应该使用ORM。“不这样做就是从你的客户那里偷东西”-Ayende

        2
  •  4
  •   Scott Arrington    17 年前

    我一下子想到一件事。使用ArrayList而不是泛型有什么原因吗?如果您使用的是.NET1.1,我可以理解,但似乎可以提高性能的一个方面是从图片中删除ArrayList,并停止类型之间的转换和强制转换。

    在设计数据访问层时,您可能会想到的另一件非常有用的事情是ORM。 NHibernate LINQ to SQL 做得很好。总的来说,N层方法对于您想要实现的目标非常有效。例如,使用可以重用的特定方法在类库中执行数据访问要比到处“复制粘贴”相同的查询要好得多。

    我希望这有帮助。

        3
  •  2
  •   Robert Harvey    17 年前

    这真的取决于你在做什么。如果它是一个具有用户界面等的不断增长的应用程序,那么您是对的,有更好的方法。

    我目前正在ASP.NETMVC中开发,我发现LINQtoSQL非常适合。LINQtoSQL使用代码生成来创建对数据建模的代码类集合。

    ScottGu在他的博客上对Linq to SQL做了非常好的介绍:

    http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

        4
  •  1
  •   Cragly    17 年前

    List<Users> 他回来了。

    Daemon Armstrong(谷歌搜索Daemon Armstrong)有一篇好文章,演示了如何实现这一点。

    "" http://www.simple-talk.com/dotnet/.net-framework/.net-application-architecture-the-data-access-layer/ ""

    然而,我现在已经开始将所有这些转移到使用EntityFramework,因为它的性能更好,并且节省了所有手动CRUD操作。我们打算使用LINQtoSQL,但由于它似乎很快就会死在水中,所以我认为最好将我的时间投入到下一个ORM中。

        5
  •  0
  •   duffymo    17 年前

    “我真的不确定是否应该在我的对象和读写数据库的类之间创建一个层。该层将获取来自数据库的数据,将其键入适当的对象,如果返回多个对象,则返回这些对象的列表。这是一种好方法吗?”

    我是一名Java开发人员,但我相信语言不可知论的答案是“是”。

    看看马丁·福勒的 "Patterns Of Enterprise Application Architecture