Это Моя программа
Отношения между объектом и объектом SectionObject - один ко многим, а связь между двумя таблицами основана на ObjectId.
first: set obj
private void ObjectAdd(...)
{
obj = new Object(); //is Public
obj = Shop.Objects.SingleOrDefault(S => S.IdObject == SelectedObjectId);
}
secound: добавить sectionObject в obj
private void BtnAddCategory(...)
{
SectionObject SO = new SectionObject();
SO.Section = Shop.Sections.SingleOrDefault(Sections => Sections.SectionId == FrmCategoryList.SelectedSectionId);
obj.SectionObjects.Add(SO);
}
three: удалить SectionObject of obj
private void BtnDelCategory(...)
{
SectionObject SO = new SectionObject();
SO = obj.SectionObjects.SingleOrDefault(Sections => Sections.SectionId == Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value));
obj.SectionObjects.Remove(SO);
}
final: вставить obj в базу данных
private void BtnAccept(...)
{
Shop.Objects.InsertOnSubmit(obj);
Shop.SubmitChanges(); // ERROR
}
ERROR is:
System.InvalidOperationException was caught
Message=An attempt was made to remove a relationship between a Object and a SectionObject. However, one of the relationship's foreign keys (SectionObject.ObjectId) cannot be set to null.
Source=System.Data.Linq
StackTrace:
at System.Data.Linq.ChangeTracker.StandardChangeTracker.StandardTrackedObject.SynchDependentData()
at System.Data.Linq.ChangeProcessor.ValidateAll(IEnumerable`1 list)
at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
at WindowsFormsApplication1.ObjectAdd.BtnAccept_Click(Object sender, EventArgs e) in C:\Users\EasySoft\Documents\Visual Studio 2010\Projects\Shop 90.08.22\Shop10.4\Shop\ObjectAdd.cs:line 47
InnerException: