c#:具有更改表结构的动态DAL

时间:2011-08-13 13:07:20

标签: c#

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

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

我使用LINQ to SQL创建了DAL,但这并不符合我的要求。我想要  从数据库中获取表的名称,并在下拉列表中显示它们。

选择表名后

。 grid应填充所有列。这样我就可以添加/更新/删除记录。

4 个答案:

答案 0 :(得分:2)

那么究竟是什么问题,您想知道如何从数据库中获取表格列表?如果是这样,并且如果您正在使用SQL Server,则可以运行类似的选项:

从sysobjects中选择名称,其中xtype ='U'

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

答案 1 :(得分:2)

从我可以收集的信息来看,最好的选择是采用与Linq to SQL不同的方法。您正在寻找直接反映您的域的UI,并且可以自动/动态生成。我想到了两种方法:

  1. 您可以利用MS Dynamic-Data,这是一种基于ASP.NET WebForms的技术。您可以将其直接连接到数据库或Entity Framework模型。它为所有CRUD操作生成网格。它通过外键检测关系,并可以生成彼此链接的表。它非常可定制。 Dynamic Data

  2. 还有另一种称为“Naked Objects”的架构模式。这需要丰富,精心设计的域和聚合根。 UI应该100%从此域模型生成。请参阅this site上的视频,以获得一个很好的例子。

  3. 我可以给你的一个例子是,最近,我们的团队已经分裂 - 一些人正在研究与我们的主要产品集成的SOA应用程序。我们的开发人员资源都专注于编写WCF服务,体系结构,数据库工程,ASP.NET等的任务。我们需要一个内部应用程序来管理新的SOA应用程序。我们不能让另一群人专门建立一个新的应用程序。

    通过使用动态数据,我们可以立即启动整个管理应用程序并运行我们的EF 4模型。它正在做我们需要的一切,并且施加了最少的资源。

答案 2 :(得分:0)

使用ADO.NET Entity Framework作为DAL,而不是使用LINQ TO SQL。

答案 3 :(得分:0)

我通过从数据库架构获取表信息解决了这个问题。

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

通过从网格列名称中获取列名称来动态创建插入/更新/删除查询。

快乐编码:)