繁体   English   中英

c#:具有变化表结构的动态 DAL

[英]c#: Dynamic DAL with changing table structure

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

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

我已经使用 LINQ 到 SQL 对 DAL 进行了装箱,但这不符合我的要求。 我想从数据库中获取表的名称并将它们显示在下拉列表中。

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

那么你的问题到底是什么,你想知道如何从数据库中获取表列表吗? 如果是这样,并且如果您使用的是 SQL 服务器,则可以像这样运行 select:

select 名称来自 sysobjects 其中 xtype = 'U'

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

据我所知,您最好的选择是采用不同于 Linq 到 SQL 的方法。 您正在寻找一个直接反映您的域并且可以自动/动态生成的 UI。 想到了两种方法:

  1. 您可以利用 MS Dynamic-Data,它是一种基于 ASP.NET WebForms 的技术。 您将其直接连接到数据库或实体框架 model。 它为所有 CRUD 操作生成网格。 它通过外键检测关系,并可以生成具有相互链接的表。 它非常可定制。 动态数据

  2. 还有另一种架构模式称为“裸对象”。 这需要丰富的、精心设计的域和聚合根。 UI 应该 100% 从此域 model 生成。 请参阅此站点上的视频以获取一个很好的示例。

我可以给你举的一个例子是,最近,我们的团队发生了分歧——一些人正在开发一个与我们的主要产品集成的 SOA 应用程序。 我们的开发人员资源都专注于编写 WCF 服务、架构、数据库工程、ASP.NET 等手头的任务。我们需要一个内部应用程序,我们可以使用它来管理新的 SOA 应用程序。 我们不能专门派另一组人来构建一个新的应用程序。

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

为您的 DAL 使用ADO.NET 实体框架,而不是使用 LINQ 到 SQL。

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

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

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

快乐编码:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM