борюсь с LINQ2SQL, я новичок в этом, и пока все нормально, но эта проблема действительно вызывает у меня горе.
У меня есть два объекта, Parent и Child, определенные как таковые
[Table(Name="Parent")]
public class Parent
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
public int ParentID { get; set; }
[Association(OtherKey = "ParentID")]
protected EntitySet<Child> _children = new EntitySet<Child>();
public IList<Child> Children
{
get { return _children.ToList(); }
set { _children (value); }
}
}
[Table(Name="Child")]
public class Child
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
public int ChildID { get; set; }
[Association(OtherKey = "ParentID", IsForeignKey=true)]
[Column] public int ParentID { get; set; }
}
Основами того, что я тогда делаю, являются:
Parent newParent = new Parent();
Child newChild = new Child();
newParent.Children.Add(newChild);
parentTable.InsertOnSubmit(newParent);
parentTable.Context.SubmitChanges();
Если я удаляю связь между двумя таблицами в БД и сохраняю, они сохраняются нормально.За исключением того, что ParentID в дочерней записи всегда остается равным 0.
Если я создаю связь в БД и пытаюсь сохранить ее, это не удается, очевидно, потому что у Child с ParentID 0 будет нарушена ссылочная целостность.
Даже если я изменю вышеперечисленное на:
Parent newParent = new Parent();
Child newChild = new Child();
newChild.ParentID = newParent.ParentID;
newParent.Children.Add(newChild);
parentTable.InsertOnSubmit(newParent);
parentTable.Context.SubmitChanges();
Почему это не работает?Чего мне не хватает в Linq2SQL?
Любая помощь очень ценится!