实体已经参与了另一种关系,实体框架CodeOnly

时间:2010-09-01 20:39:36

标签: c# entity-framework-4

我有两个对象......如果我用任何一个编译一个程序,它运行正常,但是当它们都存在于同一个程序中时,我得到异常......

“'ObjectContext.UnitSet'中的实体参与'Sheet_Statistics'关系。找到0相关的'工作表'。预计会有1'工作表'。” < / p>

class Unit
{
 public int Id;
 public string Name;
}
class Template
{
 public int Id;
 public virtual ICollection<Unit> Units
}

class Sheet
{
 public int Id;
 public virtual ICollection<Unit> Units
}

然后他们的配置..

TemplateConfiguration:EntityConfiguration // ....

        //// map the collection entity
        HasMany(k => k.Units).WithRequired()
            .Map("template.units",
                (template, unit) => new
                {
                    Template = template.Id,
                    Unit = unit.Id
                });

SheetConfiguration:EntityConfiguration // ....

        //// map the collection entity
        HasMany(k => k.Units).WithRequired()
            .Map("sheet.units",
                (sheet, unit) => new
                {
                    Sheet = sheet.Id,
                    Unit = unit.Id
                });

UnitConfiguration : EntityConfiguration<Unit>
// 
            // Initialize the Primary Key
            HasKey(k => k.Id);
            // Initialize that the Key Increments as an Identity
            Property(k => k.Id).IsIdentity();


var templates = new List<Template>
                {
                    new Template
                    {
                        Name = // ..,
                        Units = new List<Unit>
                        {
                            new Unit
                            {
                                // ...
                            }
                        }
                    }
                };
                templates.ForEach(x =>
                {
                    context.Templates.Add(x);
                });
                context.SaveChanges(); // <-- Exception Happens Here, I never even get to try to add Sheets.

1 个答案:

答案 0 :(得分:2)

我正在考虑这个因为没有看到所有你的代码,我无法解决更多问题。我认为您的问题是您创建 Unit但未设置某种Sheet属性(您需要提供所有实体/配置代码)。您需要创建SheetUnit 两者,然后才能保存UnitSheet,因为它们具有必需的参考(因此错误)你得到了)。如果您提供更多代码,我将能够更好地完善我的答案。