c#:改变表结构的动态DAL

本文关键字:动态 DAL 结构 改变 | 更新日期: 2023-09-27 18:05:43

我正面临一个问题。我正在研究一个项目,该项目需要动态填充网格控件来添加,更新和删除特定表的记录。

数据库尚未完成。我想要的是,如果我向表中添加新列并运行应用程序。该网格应该包含新添加的列,以便我可以添加新行。更新或删除现有行。

我已经使用LINQ到SQL创建了DAL,但这并没有涵盖我的需求。我想要的从数据库中获取表名并在下拉列表中显示。

选择表名后。网格应该填充所有的列。这样我就可以添加/更新/删除记录

c#:改变表结构的动态DAL

那么您的问题究竟是什么,您想知道如何从数据库中获取表列表?如果是这样,如果你正在使用SQL Server,你可以运行这样的select语句:

select name from sysobjects where xtype = 'U'

您可以浏览这些系统表:sysobjects和syscolumns,它们将元数据信息存储在数据库中。

根据我收集到的信息,最好的办法是采用与Linq to SQL不同的方法。你正在寻找一个UI,直接反映你的领域,可以自动/动态生成。我想到了两种方法:

  1. 你可以利用MS动态数据,这是一个ASP。. NET webforms技术。您可以将其直接连接到数据库或实体框架模型。它为所有CRUD操作生成网格。它通过外键检测关系,并生成具有彼此链接的表。它是非常可定制的。动态数据

  2. 还有一种建筑模式叫做"裸物"。这需要丰富的、设计良好的域和聚合根。UI应该100%由这个域模型生成。

我可以给你举一个例子,最近,我们的团队分裂了——一些人在开发一个与我们的主要产品集成的SOA应用程序。我们的开发人员资源都集中在手头的任务上:编写WCF服务、架构、数据库工程、ASP。NET等等。我们需要一个内部应用程序来管理新的SOA应用程序。我们不能再派一群人去开发一个新的应用。

通过使用动态数据,我们有了整个管理应用程序,并运行我们的EF 4模型在任何时间。

使用ADO。

我通过从数据库模式中获取表信息来解决这个问题。

在运行时将表构建为网格,并自动生成所有列。

创建了插入/更新/删除查询,从网格列名获取列名。

快乐编码:)