CTP5,CF,最佳实践:“无法确定从属操作的有效排序。” [英] CTP5, CF, Best Practices: "Unable to determine a valid ordering for dependent operations."
问题描述
我收到以下错误:
无法确定相关操作的有效排序。由于外键约束,模型要求或商店生成的值,可能存在依赖关系。
Unable to determine a valid ordering for dependent operations. Dependencies may exist due to foreign key constraints, model requirements, or store-generated values.
粗略地说,这是造成它的原因:
Roughly, here's what's causing it:
public class Group
{
public virtual Collection<Layout> Layouts { get; set; }
public virtual Layout DefaultLayout { get; set; }
}
public class Layout
{
public virtual Group { get; set; }
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Group>().HasMany(g => g.Layouts).WithOptional(l => l.Group);
modelBuilder.Entity<Group>().HasOptional(g => g.DefaultLayout);
}
推荐答案
< p style ="margin:0in 0in 0pt"> Tlmii,
我怀疑问题是你只是指定其中一个关系模型:
  ;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;
modelBuilder.Entity< Group >()。HasOptional(g => g.DefaultLayout);
modelBuilder.Entity<Group>().HasOptional(g => g.DefaultLayout);
在这种情况下,因为你没有指定多重性这种关系的另一端按惯例成为一个多选项。
我在这里猜测,但我怀疑你希望这是某种形式的一对一关系。
如果是这样,那么你可以流利地调用这样的东西:
In this case because you don’t specify the multiplicity of the other end of the relationship it becomes an option-to-many by convention. I’m making a guess here but I suspect that you want this to be some form of one-to-one relationship. If so, then you can the fluent call to something like this:
modelBuilder.Entity< Group >()。HasOptional(g => g.DefaultLayout).WithRequired();
modelBuilder.Entity<Group>().HasOptional(g => g.DefaultLayout).WithRequired();
这将使PK与PK之间的关系分组和布局,使布局的PK是组的PK的FK。
你也可以这样做:
modelBuilder.Entity< Group >()。HasOptional(g => g.DefaultLayout).WithOptionalPrincipal();
modelBuilder.Entity<Group>().HasOptional(g => g.DefaultLayout).WithOptionalPrincipal();
在这种情况下将创建一个FK(布局中没有映射。
我可以在这些更改之后使更新生效。
谢谢,
Arthur
这篇关于CTP5,CF,最佳实践:“无法确定从属操作的有效排序。”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!