gpt4 book ai didi

linq - 使用LINQ2SQL插入新的子级+父级

转载 作者:行者123 更新时间:2023-12-01 08:06:52 27 4
gpt4 key购买 nike

在LINQ2SQL上苦苦挣扎,这是我的新手,到目前为止还可以,但是这个问题确实让我感到悲伤。

我有两个对象,父级和子级,定义为

[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中缺少什么?

任何帮助,不胜感激!

最佳答案

请在您的项目中添加一个新项目:前缀为LINQ to SQL classes mapped to relational objects.'.dbml',然后将表格添加到设计器界面,这样VS将自动为您创建实体映射和相关关系,P.S.:不要忘记为每个表设置一个primary key,否则没有一个可以完美地工作

关于linq - 使用LINQ2SQL插入新的子级+父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6980513/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com