我有以下两个类:
public class Person
{
public int Id { get; set; }
public string FullName { get; set; }
}
public class Trip
{
public int Id { get; set; }
public string Name { get; set; }
public virtual IEnumerable<Person> Persons { get; set; }
}
如你所见,旅行可以有一个或多个人......
我尝试使用EntityConfiguration正确构建数据库,但我无法让它工作......我对它的使用感到很困惑:
public class TripConfiguration : EntityTypeConfiguration<Trip>
{
internal TripConfiguration()
{
// ???
}
}
我需要编写什么才能使应用程序正常运行:
答案 0 :(得分:1)
试试这个:
this.HasRequired(x => x.Person)
.WithMany(x => x.Trips)
.HasForeignKey(x => x.PersonId);
你的课程:
public class Person
{
public int Id { get; set; }
public string FullName { get; set; }
public virtual ICollection<Trip> Trips { get; set;}
}
public class Trip
{
public int Id { get; set; }
public string Name { get; set; }
public int PersonId { get; set; }
public virtual Person Person { get; set; }
}
据我所知,EF不支持独特的FK(如果我错了,还是纠正我......)。所以你必须自己检查一下。
答案 1 :(得分:0)
这不是一对多的关系,这是一个多对多的关系,你需要在关系的两边都有集合。 EF将代表您创建木匠表。从今天开始,只有在创建连接表时才需要在joiner表中创建一个唯一约束,以确保这种情况发生,因为EF通过配置尚未支持Unique Key约束,因此无法将其配置在行程中。
public class Person
{
public int Id { get; set; }
public string FullName { get; set; }
public virtual ICollection<Trip> Trips { get; set; }
}
public class Trip
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Person> Persons { get; set; }
}
然后
class PersonConfiguration : EntityTypeConfiguration<Person>
{
public PersonConfiguration()
{
this.HasMany(t => t.Trips).WithMany(t => t.Persons);
}
}