如何在 Windows Forms/WPF 中为数据库视图(带连接)创建编辑器?
Posted
技术标签:
【中文标题】如何在 Windows Forms/WPF 中为数据库视图(带连接)创建编辑器?【英文标题】:How to create editor for database view (with joins) in Windows Forms/WPF? 【发布时间】:2012-05-21 19:15:48 【问题描述】:在 WPF/WinForms 中为数据库中的某些数据创建快速编辑器的最简单方法是什么,其中数据由 SQL Server 数据库中的视图表示?
假设我有一个表Person id int, name nvarchar(max), GenderID int, CityID int
,其中 GenderID 和 CityID 是对表 Gender 和 City 的引用。在编辑器中,Person 将显示为 name 文本框、gender 组合框(从 Gender 表中选择性别名称)和 city 列相同。
我可以做一些简单的事情来让一些控制/代码生成这个吗?如果我只想选择数据,那么 WinForms DataGridView 或 WPF DataGrid 可以为每个属性生成一列,并为集合中的每个对象显示一行。 -
如果关系是由外键定义的,是否有某种类似的魔术控件可以为数据库视图执行此操作?
在我看来,成千上万的开发人员都面临过这种问题——快速创建一个 GUI 来编辑与其他表有关系的数据库行,因此应该有某种普遍接受的解决方案。还是每个人都在代码中这样做?或者,如果有其他语言的工具,不是 C#,不是 Windows 窗体 - 比如 dBase。
【问题讨论】:
您知道 DataGridView.AutoGenerateColumns 属性吗? (msdn.microsoft.com/en-us/library/…)。它会自动完成很多事情,您可以以某种方式覆盖 DataGridView 对其进行自定义。 我是,浏览数据效果很好,但编辑数据却没有解决问题 我相信它也应该支持编辑,只要它“认为”你的数据源是可编辑的。请在您的问题中说明您提供什么样的数据源。 你的数据访问层是什么?如果您使用的是实体框架,您可以将选择的视图和插入/更新/删除映射到存储的过程中,从而允许您控制基础表的更新方式。 仅供参考,如果 SQL Server 从多个表中获取数据,SQL Server 本身不允许对视图执行 UPDATE。 【参考方案1】:您正在描述 Web 开发中所谓的脚手架。脚手架是一种为数据库中的每个表自动生成 UI 的方法。脚手架可让您创建一个功能 UI,用于根据数据架构查看和编辑数据。以下是 WPF 脚手架的一些资源。
-
代码项目网站上有一篇WPF脚手架文章:WPF CRUD Generator (Scaffolding)
还有一个 Codeplex 项目可能会有所帮助:WPF Scaffolder
享受吧!
【讨论】:
【参考方案2】:ASP .NET 动态数据使用模板为您自动生成一个 UI,该 UI 将代表您选择的数据库表/视图,包括您想要的自动生成的 CRUD 功能。
它甚至可以正确获取查找表并自动呈现下拉菜单。
http://msdn.microsoft.com/en-us/library/ee845452(v=vs.100).aspx
【讨论】:
以上是关于如何在 Windows Forms/WPF 中为数据库视图(带连接)创建编辑器?的主要内容,如果未能解决你的问题,请参考以下文章