EFCore 一对多

Author(作者)实体模型类(一端) 注:一个作者可以写多本书,一本书只能有一个作者,所以作者是一端,书是多端

public class Author
{
    public int Id { get; set; }
    //作者姓名
    public string AuthorName { get; set; }
  
}

Book(书)实体模型类(多端)

public class Book
{
    public int Id { get; set; }
    //书名
    public string BookName { get; set; }
    //作者姓名(一本书有一个位作者)
    public int AuthorId { get; set; }
    //导航属性,一本书有一个作者
    public Author Author { get; set; }
}

 

上下文容器类MyDbContext

using Microsoft.EntityFrameworkCore;

namespace MvcApp.Controllers
{
    public class MyDbContext : DbContext
    {
     
        public DbSet<Book> Book { get; set; }
        public DbSet<Author> Author { get; set; }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //使用sql server数据库
            //optionsBuilder.UseSqlServer("Data Source=192.168.0.207,1433;Initial Catalog=db_csdn_wx;User ID=hkuser;Password=csdn2018")

            //使用mysql 数据库
            optionsBuilder.UseMySql("Data Source=192.168.10.27;port=3306;Initial Catalog=FBTest;user id=root;password=csdn2018;Character Set=utf8");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            //配置表模型信息
           
            var book = modelBuilder.Entity<Book>();
            book.ToTable("Book").HasKey(r=>r.Id);
            book.Property(r => r.BookName).HasMaxLength(20);
            book.Property(r => r.AuthorId).IsRequired();
			
			//配置关系
            //一本书,有一个作者,外键是AuthorId,不许为空
            book.HasOne(r => r.Author).WithMany().HasForeignKey(r => r.AuthorId).IsRequired();

			
			
            var author = modelBuilder.Entity<Author>();
            author.ToTable("Author").HasKey(r => r.Id);
            author.Property(r => r.AuthorName).IsRequired().HasMaxLength(20);
           
        }
    }
}

控制器

public class HomeController : Controller
{
    public IActionResult Index()
    {
        using (MyDbContext db = new MyDbContext())
        {

            //var author = db.Author.Add(new Author() { AuthorName = "凡凡" });
            //var book = db.Book.Add(new Book() { BookName = "CSDN日志指南", AuthorId = 1 });
            //var isOk = db.SaveChanges();
	    var data1 = db.Book.Include(r => r.Author).Where(r=>r.AuthorId==1).ToList();
	    var data2 = db.Book.Include(r => r.Author).Where(r=>r.Author.AuthorName=="凡凡").ToList();
        };
        return View();
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值