测试一下EF core 的操作 蛀牙总是用导航属性有c#教程的时候有点不理解 写个例子给自己用
class Program
{
static void Main(string[] args)
{
MyDbContext myDbContext = new MyDbContext();
try
{
#region 添加业务/第一种添加 student中把导航属性school也加进去 这是新的用法
//AddWithDaoHangShuXing(myDbContext);
#endregion
#region 添加业务/第二种添加 先添加student 添加后再添加school
//AddWithSingle(myDbContext);
#endregion
#region 修改业务 按照通俗的业务逻辑 那么修改传回来的就是类型本身 即所有的属性都可以更改
//1.首先 查出来所有的学生数据
//1.1 lambada表达式
var students = myDbContext.Student.ToList();
var studentWithDaoHangShuXings = myDbContext.Student.Include(x => x.School).ToList();
var studentWithDaoHangShuXingProvinceces = myDbContext.Student.Include(x => x.School).ThenInclude(x=>x.Province).ToList();
//1.2 linq
var studentLinqs = (from s in myDbContext.Student
select new {
s.StudentId, s.StudentAge, s.StudentName, s.School
}).ToList();
#endregion
Console.WriteLine("操作完毕!");
}
catch (Exception ex)
{
}
Console.ReadLine();
}
private static void AddWithSingle(MyDbContext myDbContext)
{
Student student = new Student
{
StudentName = "张汶莱",
StudentAge = 26
};
myDbContext.Student.Add(student);
myDbContext.SaveChanges();
School school = new School
{
StudentId = student.StudentId,
SchAddress = "广发学校",
SchName = "广发学校地址"
};
myDbContext.School.Add(school);
myDbContext.SaveChanges();
}
private static void AddWithDaoHangShuXing(MyDbContext myDbContext)
{
Province province = new Province
{
ProvinceLeaderName = "党中央",
ProvinceName = "陕西省"
};
School school = new School
{
SchAddress = "老毛学校地址",
SchName = "老毛小学",
SchoolId = 0,
Province = province
};
Student student = new Student
{
StudentAge = 12,
StudentName = "梁非凡",
School = school,
StudentId = 0
};
myDbContext.Student.Add(student);
myDbContext.SaveChanges();
}
}
public class Province
{
public int ProvinceId { get; set; }
public string ProvinceName { get; set; }
public string ProvinceLeaderName { get; set; }
}
public class School
{
public int SchoolId { get; set; }
public int StudentId { get; set; }
public string SchAddress { get; set; }
public string SchName { get; set; }
public Province Province { get; set; }
}
public class MyDbContext : DbContext
{
/// <summary>
/// 配置数据连接信息
/// </summary>
/// <param name="optionsBuilder"></param>
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=.;DataBase=TestMyDb;Uid=sa;Pwd=123456");
base.OnConfiguring(optionsBuilder);
}
public DbSet<Student> Student { get; set; }
public DbSet<School> School { get; set; }
}
public class Student
{
public int StudentId { get; set; }
public string StudentName { get; set; }
public int StudentAge { get; set; }
//导航属性
public School School { get; set; }
}