C# 从WPF Datagrid保存对SQL Server数据库的更改
我正在使用WPF datagrid在SQL Server数据库中显示我的内容。datagrid中的内容绑定到数据库中的视图。我通过以下方式填充datagrid on窗口:C# 从WPF Datagrid保存对SQL Server数据库的更改,c#,database,datagrid,C#,Database,Datagrid,我正在使用WPF datagrid在SQL Server数据库中显示我的内容。datagrid中的内容绑定到数据库中的视图。我通过以下方式填充datagrid on窗口: this.myAccountantDBDataSet = MyAccountant .MyAccountantDBDataSet(this.FindResource("myAccountantDBDataSet"); // Load data into the table AccountData. this.acco
this.myAccountantDBDataSet = MyAccountant
.MyAccountantDBDataSet(this.FindResource("myAccountantDBDataSet");
// Load data into the table AccountData.
this.accountDataAdapter = new MyAccountant
.MyAccountantDBDataSetTableAdapters.AccountDataTableAdapter();
this.accountDataAdapter.Fill(myAccountantDBDataSet.AccountData);
System.Windows.Data.CollectionViewSource accountDataViewSource =
(System.Windows.Data.CollectionViewSource)
this.FindResource("accountDataViewSource");
accountDataViewSource.View.MoveCurrentToFirst();
我想知道的是,如何将更新、插入和删除保存回数据库,因为我在datagrid中显示的是一个视图。数据库表和视图如下所示:
更新将起作用,因为视图中的字段以1:1的比例映射到基础表中的字段,因此Sql Server将能够将视图中的更新解析回表中(甚至
AccountType
)
插入将不起作用,因为无法设置Account.AccountTypeId
,我假设它是必填字段
删除将不起作用,因为Sql Server无法告诉您要删除的表中的哪个记录
我认为在这种情况下,您也可以使用
Accounts
记录,在一个将AccountData
作为数据源的数据库中显示AccountData.AccountType
并绑定到Account.AccountTypeId更新将起作用,因为视图中的字段以1:1映射到基础表中的字段,所以Sql Server将能够将视图中的更新解析回表(甚至AccountType
)
插入将不起作用,因为无法设置Account.AccountTypeId
,我假设它是必填字段
删除将不起作用,因为Sql Server无法告诉您要删除的表中的哪个记录
我认为在这种情况下,您可以使用Accounts
记录,并以AccountData
作为数据源的方式显示AccountTypeId
,显示AccountData.AccountType
并绑定到Account.AccountTypeId
您应该考虑使用语句和变量/对象的命名约定。这些是一些冗长的标识符。您应该考虑使用语句和变量/对象的命名约定。这些是一些冗长的标识符。不过我希望将此字段用作文本列。我希望它显示已输入帐户的帐户类型的值。但是,当用户添加新帐户时,他们可以键入帐户类型。我最终希望这个专栏像一个AutoCompleteTextBox,当用户开始键入时,它将显示已经输入的帐户类型的建议,如果用户键入不同的内容,将添加新的类型。我认为您最好开始使用MVVM中的视图模型。您可以在其中定义自动完成列表,并让您的控制器按名称处理id的查找。我希望它显示已输入帐户的帐户类型的值。但是,当用户添加新帐户时,他们可以键入帐户类型。我最终希望这个专栏像一个AutoCompleteTextBox,当用户开始键入时,它将显示已经输入的帐户类型的建议,如果用户键入不同的内容,将添加新的类型。我认为您最好开始使用MVVM中的视图模型。您可以在其中定义自动完成列表,并让您的控制器按名称处理id的查找。