【问题标题】:what is the reason for Multiplicity constraint violated.违反多重性约束的原因是什么。
【发布时间】:2013-02-08 09:44:06
【问题描述】:

我有一个 A 类,它有另一个 B 类的列表

Class A
{
  public List<B> PointCollection
   {
   get;
   set;
   }
}

虽然所有其他文章都告诉 B 类也可能包含 A 类的对象,但事实并非如此。当我填充数据并尝试保存时,关系'A_PointCollection'的角色'A_PointCollection_Source'具有多重性1或0..1。抛出异常。 .注意我不是在定义关系,而是让实体框架自己定义。 所以,请提出可能的解决方案

【问题讨论】:

  • 我没有调查过,但我希望您的 A->B 关系的 A 侧确实是多重性 1(因为 B 只有一个 A)。我怀疑您需要发布更多代码 - 您如何保存这些数据?
  • 实际上,如果我只使用以上这些类,那么就没有问题。但场景如下 A 类 { public List PointCollection { get;放; } } 类 C { public List OtherCollection { get;放; } } Class D : A { } 而实际上 Class A 的点集合是在 Class D 中填充然后保存的,所以我无法理解是哪个类造成了问题。
  • 您能否编辑您的问题以包含演示该问题的代码 - 包括类 您正在使用的代码保存它们。如果您发布的代码没有复制问题,那么您将很难提供帮助......
  • Dan,保存过程的代码行比较大,所以无法贴出代码,另外如果你能告诉我异常的可能原因,我可以试试那些选项。
  • 可能的原因是你的代码错误。有很多方法可能是错误的!最有可能的是,我猜测您保存到数据库的代码是错误的,但我无法在没有看到代码的情况下告诉 如何。可能是您的数据库架构错误,或者您使用的数据库服务器不受 EF 支持,或者您的列名拼写错误,或者其他一百万件事。到目前为止,解决这个问题的更简单方法是通过实际显示代码是什么来缩小问题范围......

标签: .net entity-framework orm entity-framework-mapping


【解决方案1】:

其实问题出在我们使用的保存方式上,为了保存目的,我们的代码非常大,所以有些方法是在对PointCollection属性进行锤炼,违反了PointCollection导航属性的关系,所以在我调试代码的时候,我发现了错误,我采用了其他方法来更新 PointCollection 导航属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    相关资源
    最近更新 更多