C# DataGridView未强制执行外键约束

C# DataGridView未强制执行外键约束,c#,.net,sql,winforms,datagridview,C#,.net,Sql,Winforms,Datagridview,我正在尝试开发一个商业应用程序,但是我遇到了一些问题 我有一个DBDataSet,它使用我的数据库作为源 我使用VS自动生成DataGridView,方法是从datasource窗口拖动到窗体上 我有两张桌子客户和销售。它们之间存在一对一的关系,Sales的id列引用了Customer的id列 但是,每当我在Sales的id列中输入一个不在Customer的id列中的值时,DataGridView不会抛出异常,而是允许输入数据 但是,当我尝试在同一个表中输入重复的主键时,datagridview

我正在尝试开发一个商业应用程序,但是我遇到了一些问题

我有一个
DBDataSet
,它使用我的数据库作为源

我使用VS自动生成DataGridView,方法是从datasource窗口拖动到窗体上

我有两张桌子<代码>客户和
销售
。它们之间存在一对一的关系,
Sales
的id列引用了
Customer
的id列

但是,每当我在
Sales
的id列中输入一个不在
Customer
的id列中的值时,DataGridView不会抛出异常,而是允许输入数据

但是,当我尝试在同一个表中输入重复的主键时,datagridview会抛出一个异常来响应


如何对外键约束执行相同操作。

从数据库导入期间不会创建ForeignKeyConstraint。右键单击数据集视图->添加->关系中的销售表。。。选择主键和外键。 “选择要创建的内容”第一个或第二个选项。或者,您可以在代码中执行此操作: this.DBDataSet.Sales.Constraints.Add( 新的ForeignKeyConstraint(this.DBDataSet.Customer.IdColumn,
此参数为.DBDataSet.Sales.IdColumn)

为什么你要插入或复制主键。。可以理解的是,每当您尝试重复主键时,它都会引发异常。我知道我只是用它来检查datagridview是否与基础数据库中的约束成功交互。现在您的意思是一个约束正在工作,而另一个不工作。?是的,完全正确。主键约束工作正常,但是外键我认为你的工作方向是错误的。。一对一关系仅存在于列之间。我已经在数据库级别创建了所有约束。我假设DataGridView会在UI中自动执行这些操作,但似乎没有。