C# 如何设置代码优先实体
我正在与代码优先实体和数据注释的概念作斗争 我正在尝试创建一个数据库,其中包括一个人员表和一个集合表,它们通过一对多关系链接,因为每个集合中可能有许多人 如何准确地设置这些类来模拟一对多关系,更重要的是如何向每个表添加数据 我尝试了以下方法:C# 如何设置代码优先实体,c#,entity-framework,ef-code-first,code-first,C#,Entity Framework,Ef Code First,Code First,我正在与代码优先实体和数据注释的概念作斗争 我正在尝试创建一个数据库,其中包括一个人员表和一个集合表,它们通过一对多关系链接,因为每个集合中可能有许多人 如何准确地设置这些类来模拟一对多关系,更重要的是如何向每个表添加数据 我尝试了以下方法: //Ensemble entity class public class Ensemble { [Key] public int ensembleID { get; set; } public string ensembleName
//Ensemble entity class
public class Ensemble
{
[Key]
public int ensembleID { get; set; }
public string ensembleName { get; set; }
public virtual List<People> persons { get; set; }
public Ensemble (int ensembleID, string ensembleName)
{
this.ensembleID = ensembleID;
this.ensembleName = ensembleName;
}
}
// people entity class
public class People
{
[Key]
public int personID { get; set; }
[Required]
public string firstname { get; set; }
[Required]
public string surname { get; set; }
[Required]
public DateTime birthDate { get; set; }
public string cellphone { get; set; }
public string email { get; set; }
public bool inSchool { get; set; } // Are they currently in a primary or secondary school
public int ensembleID { get; set; }
//[ForeignKey("ensembleID")]
public Ensemble Ensemble { get; set; }
public People(int personID, string firstname, string surname, DateTime birthDate, string cellphone, string email, bool inSchool, int ensembleID)
{
this.personID = personID;
this.firstname = firstname;
this.surname = surname;
this.birthDate = birthDate;
this.cellphone = cellphone;
this.email = email;
this.inSchool = inSchool;
this.ensembleID = ensembleID;
}
// Adding data
context.People.Add(new People(1, "Adam", "Herd", new DateTime(1992, 3, 12), "0274578956", "adamherd1@live.com", true));
context.Ensemble.Add(new Ensemble(1, "Little River Band"));
但是,这会返回一个错误。”INSERT语句与外键约束\FK_dbo.People_dbo.Ensembles_ensembleID\冲突。冲突发生在数据库\SMMC_adam_stacy.Context\、表\dbo.Ensembles\、列“ensembleID”中。\r\n语句已终止。}
如需进一步解释导航属性的工作原理,如公共虚拟合奏合奏{get;set;}请在合奏中向集合添加人员:
context.Ensemble.Add(new Ensemble(1, "Little River Band"));
context.People.Add(new People(1, "Adam", "Herd", new DateTime(1992, 3, 12), "0274578956", "adamherd1@live.com", true));
为回应干杯。不幸的是,这没有什么区别。
var ens = new Ensemble(1, "Little River Band");
var person = new People(1, "Adam", "Herd", new DateTime(1992, 3, 12),
"0274578956", "adamherd1@live.com", true));
// BTW: the constructor does not match the call
ens.persons.Add(person);
context.Ensemble.Add(ens);