Hi. I'm new to C# and .NET in general, coming from a FLOSS background (mostly PHP, Python and Ruby). I have used the Data Source configuration wizard to connect to an MDB file (unfortunately need to do this, as the app this is being used with was written over 5 years ago, and is currently a VB6 app connecting to an Access database). The wizard created a DataSet class JobDataSet with the following DataTables in it (among others):ItemType, Item. ItemRevision
In the MDB, these map to the following tables:
ItemRevisions ( ID: AutoNumber PK, JobNo: Text, ItemTypeID: Number, ItemNo: Number, RevisedAt: Date/Time, RevisedBy: Text, ItemID: Number ) Items ( ID: AutoNumber PK, JobNo: Text, ItemTypeID: Number, ItemNo: Number ) ItemTypes: ( ID: AutoNumber PK, Type: Text )
Anyway, the following is the code for the method that doesn't work:
private void AddJobItem() { itemTypesBindingSource.EndEdit(); JobDataSet.ItemsRow itemsRow = jobDataSet.Items.NewItemsRow(); itemsRow.ItemTypeID = long.Parse(comboBoxItemType.SelectedValue.ToString()); itemsRow.JobNo = JobNo; itemsRow.ItemNo = (long)numericUpDownItemNo.Value; jobDataSet.Items.Rows.Add(itemsRow); jobDataSet.Items.AcceptChanges(); itemsTableAdapter.Update(jobDataSet.Items); JobDataSet.ItemRevisionsRow itemRevisionsRow = jobDataSet.ItemRevisions.NewItemRevisionsRow(); itemRevisionsRow.ItemTypeID = long.Parse(comboBoxItemType.SelectedValue.ToString()); itemRevisionsRow.JobNo = JobNo; itemRevisionsRow.ItemNo = (int)numericUpDownItemNo.Value; itemRevisionsRow.RevisedAt = System.DateTime.Now; itemRevisionsRow.RevisedBy = Program.AuthForm.Username; itemRevisionsRow.ItemID = itemsRow.ID; jobDataSet.ItemRevisions.Rows.Add(itemRevisionsRow); jobDataSet.ItemRevisions.AcceptChanges(); itemRevisionsTableAdapter.Update(jobDataSet.ItemRevisions); jobDataSet.AcceptChanges(); }
Basically, the issue is, everything gets set properly as far as the object properties are concerned (checked this by single stepping through the debugger and looking at the values of the objects in question), no exceptions are being thrown. But the primary keys stay -1 instead of setting to an actual database ID, and the data is never actually added to the tables. I'm sure I'm missing something simple here (like I said, new to this, first ADO.NET disconnected layer app), so if anybody could help it would be appreciated.