【问题标题】:N:M relation and deleting recordsN:M 关系和删除记录
【发布时间】:2009-06-10 13:57:38
【问题描述】:

我有三个表:Context、Component 和 ComponentContext。 ComponentContext 表将 Component 和 Context 链接成 N:M 关系。

我正在开发一个将大量数据导入这些表的 C# 项目。它使用实体模型,因此在我的代码中我只看到一个组件实体和一个上下文实体。

现在,仅使用这些实体,是否可以删除所有三个表的内容?例如,我可以使用这个:

foreach (var obj in CPE.Context) { CPE.DeleteObject(obj); }

删除所有上下文记录。 (CPE 是 Context 实体模型。)当然,这会失败,因为 Context 与组件有关系。所以我需要另一种方法。

(是的,我可以使用 SQL 来做同样的事情,但它是为了实体模型的“可用性证明”,所以我想在模型中尽可能多地这样做。)

【问题讨论】:

    标签: c# model entity


    【解决方案1】:

    然后我注意到我在代码中的愚蠢之处。它抱怨引用另一个表作为不删除上下文记录的原因。因为我刚刚添加了新的 ComponentContext 表,所以我责怪那个表,但下次我真的应该更仔细地阅读这些错误消息。 (还有另一个表链接到 Context 表。)

    反正要删除这些关系,这段代码就够了:

    foreach (var obj in CPE.Components.ToList())
    {
        obj.Context.Load();
        foreach (var child in obj.Context.ToList()) { obj.Context.Remove(child); }
        CPE.DeleteObject(obj);
    }
    

    顺便说一句,我出于习惯使用 ToList()。它倾向于避免一些与 .NET 读取记录的方向相关的异常。现在它首先填充一个列表,然后以我喜欢的任何方向遍历列表...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      相关资源
      最近更新 更多