我使用的是32位版本的Visual Studio 2015 Enterprise。
首先,在我的项目中,我创建了一个基于服务器的数据库,并将其命名为HR.mdf,所以我使用的是LocalDB,我猜,顺便说一句,我将复制到输出字典属性为如果更新则复制。在这个数据库中,我只有一个简单的表定义为:
BitmapImage
其次,我创建了一个名为HR的 DataSet 项,我将承包商表拖到设计面板中:
和VS 2015自动生成三个C#类: HR (它是一个强类型的DataSet,有三个内部类,包括强类型DataTable contractorDataTable ,ant so on。), contractorTableAdapter 和 TableAdapterManager 。
所以现在我的解决方案如下:
第三,然后我将承包商的Datagrid从数据源标签拖到我的WPF主窗口中:
运行程序时,主窗口如下所示:
我在MainWindow背后的C#代码是:
CREATE TABLE [dbo].[contractor] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] VARCHAR (50) NOT NULL,
[IsMarried] BIT NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
当我点击提交按钮时,我所期望的是,我在该网格中所做的所有更改都会更新到数据库,例如编辑记录和插入新记录。但实际上,点击后没有任何反应。
我在MSDN上发现了这个教程:https://msdn.microsoft.com/en-us/library/ms171933(v=vs.140).aspx,但是我没有在MainWindow类的任何对象上找到Validate()或EndEdit()。
我在HR.design.cs中为Update()方法添加了一个断点,该方法由VS 2015生成:
using System;
using System.Windows;
namespace DataSetLab
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private DataSetLab.HR hR;
private DataSetLab.HRTableAdapters.contractorTableAdapter hRcontractorTableAdapter;
private System.Windows.Data.CollectionViewSource contractorViewSource;
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
hR = ((DataSetLab.HR)(this.FindResource("hR")));
// Load data into the table contractor. You can modify this code as needed.
hRcontractorTableAdapter = new DataSetLab.HRTableAdapters.contractorTableAdapter();
hRcontractorTableAdapter.Fill(hR.contractor);
contractorViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("contractorViewSource")));
contractorViewSource.View.MoveCurrentToFirst();
}
private void click(object sender, RoutedEventArgs e)
{
try
{
hRcontractorTableAdapter.Update(hR.contractor);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
hRcontractorTableAdapter.Fill(hR.contractor);
}
}
}
}
但是从未达到这一点。
感谢任何帮助,提前谢谢。谷歌搜索了很多,没有找到任何人这样做。
答案 0 :(得分:0)
@dotNet是对的。原因是.mdf被覆盖了,我的设置是“复制到输出字典”#39;由于你需要重新启动Visual Studio 2015,所以属性不起作用。我意识到这最终不是一个好问题,我为此感到遗憾,虽然我找不到关闭它的方法,但是,所以我在这里发了一个答案。