に子レコードを保存し、私はこの質問を何度も求められている実感 - と私は/読んだことがあると思いますそれらの多くを捜索 - と私は私が見つけたすべての提案を確認するために非常に懸命に試みている -問題一見のデータベース
おそらくもう一組の目が必要なのでしょうか?
問題は次のとおりです。 私はマスターテーブルと2つの詳細テーブルを持っています。それらは、データベースとまったく同じ関係、キー/ FKフィールド/タイプのデータソースと同じように定義されています。
私はテーブルに手動でデータを入力することができます。クエリを実行すると期待される結果が得られます(左への結合など)。また、正しい親レコードに結合されたアプリケーションでレコードを正しく表示できます。
ただし、これらのテーブル/ BindingSourcesのいずれかが正しく動作しています。 私は見て知っているどこでも見て、違いを見ることができない?
BargeDetailsテーブルバインディングソースは完全に機能します。 ShiftDeadTimeはレコードをデータベースに保存/挿入しません。
私はcheckedingとbindingsource.count = 1となり、基になるbindingsource.currentは期待値を持っています。
SQLトレースは、挿入/更新の試行を示していません。
私はVisual Studio 2010、ADO.NET、.NET 4、WinForms、およびSQL Server 2008を使用しています。 データソースはデザイナを最初に使用するコードではなく、設計されています。 正確なデータソース/ datamember = FKを指すように詳細バインディングソースを変更しました。
私の_Load()では、ta.fill()の順序は一見正しいと思います。
private void frmShiftReport_Load(object sender, EventArgs e)
{
this.shiftsTableAdapter.Fill(this.dsShiftReport.Shifts);
this.shiftDeadTimeTableAdapter.Fill(this.dsShiftReport.ShiftDeadTime);
this.bargeDetailTableAdapter.Fill(this.dsShiftReport.BargeDetail);
this.vw_BargeLookupTableAdapter.Fill(this.dsShiftReport.vw_BargeLookup);
this.vw_CommodityLookupTableAdapter.Fill(this.dsShiftReport.vw_CommodityLookup);
}
バインディングソースは同じように設定されているようです。私は似た/正しいEndEdit()sおよびすべて更新を(持っているように見える私のクリック/保存したイベントで
shiftDeadTimeBindingSource
datasource = shiftsBindingSource1
datamember = FK_ShiftDeadTime_Shifts
bargeDetailBindingSource
datasource = shiftsBindingSource1
datamember = FK_BargeDetail_Shifts
dgShiftDeadTime
datasource = shiftDeadTimeBindingSource
);
// barge details
private void shiftsBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.shiftsBindingSource1.EndEdit();
this.bargeDetailBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.dsShiftReport);
}
// shiftDeadTime
private void toolStripButton8_Click(object sender, EventArgs e)
{
this.Validate();
this.shiftsBindingSource1.EndEdit();
this.shiftDeadTimeBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.dsShiftReport);
}
そして最後に、datasource.designer.csに - 2つの関係/制約が同一の設定のように見えます。
fkc = new global::System.Data.ForeignKeyConstraint("FK_BargeDetail_Shifts", new global::System.Data.DataColumn[] {
this.tableShifts.IDColumn}, new global::System.Data.DataColumn[] {
this.tableBargeDetail.ShiftIDColumn});
this.tableBargeDetail.Constraints.Add(fkc);
fkc.AcceptRejectRule = global::System.Data.AcceptRejectRule.None;
fkc.DeleteRule = global::System.Data.Rule.Cascade;
fkc.UpdateRule = global::System.Data.Rule.Cascade;
fkc = new global::System.Data.ForeignKeyConstraint("FK_ShiftDeadTime_Shifts", new global::System.Data.DataColumn[] {
this.tableShifts.IDColumn}, new global::System.Data.DataColumn[] {
this.tableShiftDeadTime.ShiftIDColumn});
this.tableShiftDeadTime.Constraints.Add(fkc);
fkc.AcceptRejectRule = global::System.Data.AcceptRejectRule.None;
fkc.DeleteRule = global::System.Data.Rule.Cascade;
fkc.UpdateRule = global::System.Data.Rule.Cascade;
this.relationFK_BargeDetail_Shifts = new global::System.Data.DataRelation("FK_BargeDetail_Shifts", new global::System.Data.DataColumn[] {
this.tableShifts.IDColumn}, new global::System.Data.DataColumn[] {
this.tableBargeDetail.ShiftIDColumn}, false);
this.Relations.Add(this.relationFK_BargeDetail_Shifts);
this.relationFK_ShiftDeadTime_Shifts = new global::System.Data.DataRelation("FK_ShiftDeadTime_Shifts", new global::System.Data.DataColumn[] {
this.tableShifts.IDColumn}, new global::System.Data.DataColumn[] {
this.tableShiftDeadTime.ShiftIDColumn}, false);
this.Relations.Add(this.relationFK_ShiftDeadTime_Shifts);
これは私を夢中にしています!私はこのような状況で行うことをお勧め何