【EntityFramework-5】表之间的关系

2017-06-15  本文已影响0人  枫雪幻林

1. 基本引用模式:

this.Has****** (p=>p.AAA).With******() // ******有这几个可选值:

2. 一对多关系配置:

基本的插入查询(建立好外键约束):

 public class Student
    {
        public long ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public virtual Class cls { get; set; }
        public long classId { get; set; }
    }
    public class Class
    {
        public long ID { get; set; }
        public string Name { get; set; }
    }

插入数据:

using (TestDBContent tdc = new TestDBContent())
{
    Class cls = new Class() { Name="测试1班"};
    tdc.Classes.Add(cls);
    Student stu = new Student() { 
    Age=18,
    cls=cls,
    Name="风雪幻林"
    };
    tdc.students.Add(stu);
    tdc.SaveChanges();
}
2.1 不要设计双向关系:
public class Class
{
    public long ID { get; set; }
    public string Name { get; set; }
    public ICollection<Student> students { get; set; }
}

查询数据:

Class clz = tdc.Classes.First();
var stus = tdc.students.Where(i => i.classId == clz.ID);
foreach (var item in stus)
{
    Console.WriteLine(item.Name);
}
2.2 通过Fluent API做配置:

3. 多对多关系配置:

 public class Student
    {
        public Student()
        {
            teachers = new List<Teacher>();
        }
        public long ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public virtual ICollection<Teacher> teachers { get; set; }
    }
    public class Teacher
    {
        public Teacher()
        {
            students = new List<Student>();
        }
        public long ID { get; set; }
        public string Name { get; set; }
        public virtual ICollection<Student> students { get; set; }
    }
public class TeacherConfig : EntityTypeConfiguration<Teacher>
{
    public TeacherConfig()
    {
        this.ToTable("t_class");
        this.Property(e => e.Name).HasMaxLength(30).IsRequired();
        this.HasMany(e=>e.students).WithMany(i=>i.teachers).Map(m=>m.ToTable("t_teacherstudent").MapLeftKey("techerId").MapRightKey("studentId"));
    }
}
public class StudentConfig : EntityTypeConfiguration<Student>
{
    public StudentConfig()
    {
        this.ToTable("t_student");           
    }
}
static void Main(string[] args)
{
    Teacher t = new Teacher() { Name = "语文老师" };
    Teacher t2 = new Teacher() { Name = "数学老师" };
    Student s = new Student() { Name = "张三", Age = 21 };
    Student s2 = new Student() { Name = "李四", Age = 22 };
    using (TestDBContent tdb =new TestDBContent ())
    {
        t.students.Add(s);
        t.students.Add(s2);
        t2.students.Add(s);
        t2.students.Add(s2);
        tdb.teachers.Add(t);
        tdb.teachers.Add(t2);
        tdb.SaveChanges();
    }
    Console.WriteLine("ok");
    Console.ReadKey();
}
上一篇下一篇

猜你喜欢

热点阅读