CTP5 - 3表简单模型故障 [英] CTP5 - 3 Table simple model trouble

查看:79
本文介绍了CTP5 - 3表简单模型故障的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我添加People时,我的初始化程序的Seed方法出现此错误。


实体:练习,参与,人。


运动有一个初始现场调查人员和参与。


参与由两个人组成。


然后有人员表。

  {" A 外键 值 不能插入  因为  A 对应 伯 键 值 确实 不 存在  [ 外国 键 约束 名称  =  Excercise_InitialSiteSurveyPerson ]"}  


 

 命名空间 TPS.KLE.Data 

{

public KLE_DB:DbContext

{

public DbSet< Person>人{得到; set ; }

public DbSet< Excercise>练习{ get ; set ; }

public DbSet< Engagement>参与{获取; set ; }

}



public class 练习

{

public int ID { get ; set ; }

public string 名称{获得; set ; }

public int InitialSiteSurveyPersonID {获得; set ; }



public virtual ICollection< Engagement> ;参与{获取; set ; }



public virtual Person SurveyPerson { get ; set ; }

}

public class 订婚

{



public int ID { get ; set ; }

public int ExcerciseID {获得; set ; }

public int OwnerID {获得; set ; }

public int TargetID {获得; set ; }



public virtual 练习练习{ get ; set ; }

public 虚拟人物所有者{获得; set ; }

public 虚拟人物目标{获得; set ; }

}

public class Person

{

public int ID {获得; set ; }

public string Fname {获得; set ; }

public string Lname {获得; set ; }



public virtual ICollection< Engagement> ;参与{获取; set ; }

}

}





/// //////////////////////////





命名空间 TPS.KLE.Data

{

public class KLE_DBInitializer:DropCreateDatabaseAlways< KLE_DB>

{

受保护 覆盖 void 种子(KLE_DB数据库)

{

。 BuildPeople(分贝);

.BuildExcercise(db);

.BuildEngagements(db);

}





private void BuildEngagements(KLE_DB db)

{

订婚e = new 订婚();

e.ExcerciseID = 1;

e.OwnerID = 2;

e.TargetID = 3;

db.Engagements.Add(e);



// Excercise ex = db.Excercises.Find(1);

// ex.Engagements.Add((e);



e = 订婚();

e.ExcerciseID = 1;

e.OwnerID = 2;

e.TargetID = 4;

db.Engagements.Add(e);



db.SaveChanges();



}



private void BuildExcercise(KLE_DB db)

{

练习e = 练习( );

e.Name = "大前";

e.InitialSiteSurveyPersonID = 2;

db.Excercises.Add(e);



e = new 运动();

e.Name = "古巴前";

e.InitialSiteSurveyPersonID = 1;

db.Excercises.Add(e);



db.SaveChanges();



}



private void BuildPeople(KLE_DB db)

{

Person p = new Person();

p.ExcerciseID = 1;

p.Fname = "Terrence";

p.Lname = " neides" ;

db.People.Add(p);

db.SaveChanges();



p = new Person();

p.ExcerciseID = 1;

p.Fname = " David" ;

p.Lname = " njeuiws" ;

db.People.Add(p);

db.SaveChanges();



p = new Person();

p.ExcerciseID = 1;

p.Fname = " Juan" ;

p.Lname = "Amillion";

db.People.Add(p);

db.SaveChanges();



p = new Person();

p.ExcerciseID = 1;

p.Fname = "Miguel";

p.Lname = "Frejoli";

db.People.Add(p);

db.SaveChanges();

}



}

}







解决方案

Terrence,


 


我无法运行您发布的代码,因为Person类不包含“ ExcerciseID”属性,由初始化程序中的代码使用。 
当我删除设置ExcerciseID的代码时,代码会为我运行,没有例外。 
如果您可以提供更多信息或重新发布代码,那么我会很高兴再次查看并尝试弄清楚这里发生了什么。


 


< p style ="margin:0in 0in 0pt"> 谢谢,


Arthur


I am getting this error in my Seed method of my initialzer when I am adding People.

Entities: Excercise, Engagement, Person.

An Excercise has an Initial Site Survey Person and Engagements.

An Engagement consists of two people.

Then there is the Person table.

{"A foreign key value cannot be inserted because a corresponding primary key value does not exist. [ Foreign key constraint name = Excercise_InitialSiteSurveyPerson ]"}

namespace TPS.KLE.Data

{

 public class KLE_DB : DbContext

 {

  public DbSet<Person> People { get; set; }

  public DbSet<Excercise> Excercises { get; set; }

  public DbSet<Engagement> Engagements { get; set; }

 }



 public class Excercise

 {

  public int ID { get; set; }

  public string Name { get; set; }

  public int InitialSiteSurveyPersonID { get; set; }



  public virtual ICollection<Engagement> Engagements { get; set; }



  public virtual Person SurveyPerson { get; set; }

 }

 public class Engagement

 {



  public int ID { get; set; }

  public int ExcerciseID { get; set; }

  public int OwnerID { get; set; }

  public int TargetID { get; set; }



  public virtual Excercise Excercise { get; set; }

  public virtual Person Owner { get; set; }

  public virtual Person Target { get; set; }

 }

 public class Person

 {

  public int ID { get; set; }

  public string Fname { get; set; }

  public string Lname { get; set; }



  public virtual ICollection<Engagement> Engagements { get; set; }

 }

}





/////////////////////////////





namespace TPS.KLE.Data

{

 public class KLE_DBInitializer : DropCreateDatabaseAlways<KLE_DB>

 {

  protected override void Seed(KLE_DB db)

  {

   this.BuildPeople(db);

   this.BuildExcercise(db);

   this.BuildEngagements(db);

  }





  private void BuildEngagements(KLE_DB db)

  {

   Engagement e = new Engagement();

   e.ExcerciseID = 1;

   e.OwnerID = 2;

   e.TargetID = 3;

   db.Engagements.Add(e);



   //Excercise ex = db.Excercises.Find(1);

   //ex.Engagements.Add((e);



   e = new Engagement();

   e.ExcerciseID = 1;

   e.OwnerID = 2;

   e.TargetID = 4;

   db.Engagements.Add(e);



   db.SaveChanges();



  }



  private void BuildExcercise(KLE_DB db)

  {

   Excercise e = new Excercise();

   e.Name = "The big Ex";

   e.InitialSiteSurveyPersonID = 2;

   db.Excercises.Add(e);



   e = new Excercise();

   e.Name = "The Cuba Ex";

   e.InitialSiteSurveyPersonID = 1;

   db.Excercises.Add(e);



   db.SaveChanges();



  }



  private void BuildPeople(KLE_DB db)

  {

   Person p = new Person();

   p.ExcerciseID = 1;

   p.Fname = "Terrence";

   p.Lname = "neides";

   db.People.Add(p);

   db.SaveChanges();



   p = new Person();

   p.ExcerciseID = 1;

   p.Fname = "David";

   p.Lname = "njeuiws";

   db.People.Add(p);

   db.SaveChanges();



   p = new Person();

   p.ExcerciseID = 1;

   p.Fname = "Juan";

   p.Lname = "Amillion";

   db.People.Add(p);

   db.SaveChanges();



   p = new Person();

   p.ExcerciseID = 1;

   p.Fname = "Miguel";

   p.Lname = "Frejoli";

   db.People.Add(p);

   db.SaveChanges();

  }



 }

}







解决方案

Terrence,

 

I was not able to run the code you posted because the Person class does not contain an “ExcerciseID” property, which is used by the code in your initializer.  When I remove the code that sets ExcerciseID then the code runs for me with no exceptions.  If you could provide some more info or repost the code then I’ll be happy to look again and try to figure out what is going on here.

 

Thanks,

Arthur


这篇关于CTP5 - 3表简单模型故障的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆