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

2024-03-20

与 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到每个表,否则没有一个能完美工作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 LINQ2SQL 插入新的子级+父级 的相关文章

  • 多态性:ORM 实体是领域实体还是数据实体?

    我有一个 BankAccount 表 LINQ to SQL 生成一个名为 BankAccount 的类 如下所示 global System Data Linq Mapping TableAttribute Name dbo BankAc
  • 强制执行 IQueryable?

    我有一个 没有转换为 SQL 的方法 我想在 IQueryable 上执行该方法 有没有办法强制 IQueryable 执行 而不必将其存储在某个中间类中 问题是您希望您的方法在本地执行而不是在数据库中执行吗 如果是这样 AsEnumera
  • LINQ Group By 投影成非匿名类型?

    我有以下 LINQ 示例 var colorDistribution from product in ctx Products group product by product Color into productColors select
  • SQL 与 LINQ 性能 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C# - 使用 Linq 获取 Attribute 的属性

    我有一个属性 它本身就有属性 我想访问这些属性之一 布尔值 并检查它是否正确 我能够检查属性是否已设置 但这就是全部 至少对于 linq 来说是这样 属性 public class ImportParameter System Attrib
  • 将 Linq 函数存储到变量中并动态定义?

    我有一个像这样的 Linq 查询 var results StudentsList GroupBy x gt x GroupID GroupBy x gt x Any g gt g IsQualified true Select g gt
  • 在 PowerShell 中调用静态通用 LINQ 扩展方法

    人们可以使用以下简单的表示法在 PowerShell 中调用许多 LINQ 方法 int numbers 1 10000 Linq Enumerable Sum numbers 在调用中包含 lambda 甚至是一件相对简单的事情 Func
  • Linq:Select 和Where 之间有什么区别

    The Select and WhereLinq 中提供了方法 对于这两种方法 每个开发人员都应该了解什么 例如 何时使用其中一种而不是另一种 使用一种相对于另一种的优势等 Where 查找匹配的项目并仅返回匹配的项目 过滤 gt IEnu
  • 从通用列表中删除项目

    我有以下方法 我希望从我的收藏中删除与产品 ID 匹配的项目 看起来相当简单 但我有一个例外 基本上我的收藏已经不同步了 那么从集合中删除项目的最佳方法是什么 public void RemoveOrderItem Model Order
  • 如何按字段对列表进行排序

    美好的一天 4 你们大家 我有一个对象列表 我的对象喜欢 Product iPhone Category SmartPhone Product HP Category PC Product HTC Category SmartPhone 我
  • 使用 Linq 返回具有最大计数的列表

    使用 C 和 Linq 如何返回具有最大大小 计数的 List 我假设您有一个名为的列表集合lists并且您想要返回此集合中元素最多的列表 如果是这样 请尝试以下操作 var listWithLargestCount lists Order
  • linq where 子句和 count 导致 null 异常

    除非 p School SchoolName 结果为 null 否则下面的代码将起作用 在这种情况下 它会导致 NullReferenceException if ExistingUsers Where p gt p StudentID i
  • Net core EF 3.1 LINQ 字符串比较不再起作用

    我有以下课程 public class Employee public string Name get set 以及 EF Core 2 1 中的 LINQ 查询 Employee GetEmployeeByName string name
  • 使用 LINQ。有两个不同的列表。如何识别不匹配的对象

    我有三门课 public partial class Objective public Objective this ObjectiveDetails new List
  • 如何在 LINQ 中执行 String.Replace?

    这是我正在尝试做的事情 但没有成功 我想打电话from x in list1 and join y in list2 where regex Match x Value Success 完成这些步骤后我需要打电话String Replace
  • 表达式 >.Compile() 的逆向?

    因为我们可以 Expression
  • 如何查询多对多表(一个表的值成为列标题)

    给定此表结构 我想展平多对多关系 并将一个表的名称字段中的值设置为列标题 并将同一表中的数量设置为列值 目前可行的想法是将值放入字典 哈希表 中并用代码表示这些数据 但我想知道是否有 SQL 方法可以做到这一点 我还使用 Linq to S
  • 学习实体框架[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 C# 编辑 XML 文档

    我在解决如何将元素添加到 XML 文档中时遇到了一些麻烦 我想将热点信息添加到 xml 中 其中 Id 正确 因此 id 2 添加热点信息 这是我当前的 XML
  • 如果我以后要应用ado实体框架,推荐的数据访问层设计模式是什么?

    我正在创建一个网站并使用 Linq to SQl 作为数据访问层 并且我愿意使该网站可以在 linq to sql 和 ado 实体框架上工作 而无需更改其他层中的许多内容 业务逻辑层或 UI层 实现这一目标的推荐模式是什么 你能简单解释一

随机推荐