学霸的爸 发表于 2023-7-18 14:34:21

netcore模型配置

模型配置可以通过Fluent API和注解的方式

[*]FluentAPI步骤
[*] 新建Products 和Category类新建Products类
Productspublic class Product
    {
      public int Id { get; set; }

      public string Name { get; set; }

      public decimal Price { get; set; }

      public int CategoryId { get; set; }

      public virtual Category Category { get; set; }

      public string Description { get; set; }

      public DateTime CreateTime { get; set; }

      public DateTime UpdateTime { get; set; }
    } 
 
新建Category类
Category public class Category
    {
      public int Id { get; set; }

      public string Name { get; set; }

      public ICollection<Product> Products { get; set; }
    }

[*]他们之间存在一对多的关系
配置实体属性protected override void OnModelCreating(ModelBuilder modelBuilder)
      {
            #region Product
            modelBuilder.Entity<Product>().ToTable("Products", "dbo")
                .Property(p => p.Name)
                .HasColumnName("ProductName");//配置表名 列名

            modelBuilder.Entity<Product>().HasKey(r => r.Id);//配置主键
   
            modelBuilder.Entity<Product>()
                .Property(r => r.Name).IsRequired()
                .HasMaxLength(500);//配置长度 和必填

            modelBuilder.Entity<Product>()
                .Property(r => r.CreateTime).HasDefaultValue(DateTime.Now);//配置默认值


            modelBuilder.Entity<Product>()
                .Property(r => r.Price).HasColumnType("decimal(18,2)").IsRequired();

            #endregion
            #region Category
            modelBuilder.Entity<Category>().ToTable("Categories", "dbo")
                .Property(c => c.Name)
                .HasColumnName("CategoryName");
            modelBuilder.Entity<Category>().HasKey(r => r.Id);
            modelBuilder.Entity<Product>()
                .HasOne(p => p.Category)
                .WithMany(c => c.Products)
                .HasForeignKey(p => p.CategoryId);
            #endregion
            base.OnModelCreating(modelBuilder);
      }Fluent API  配置一对一的关系
一对一关系表示两个实体存在唯一的关系,每个实体只能关联到另一个实体
新建User和UserAddress类
User类  public class User
    {
      public int Id { get; set; }

      public string UserName { get; set; }

      public UserAddress UserAddress { get; set; }
    }FluentAPI 中多对多关系
例如Student和Course之间存在多对多关系
Student  public class Student
    {
      public int Id { get; set; }

      public string Name { get; set; }

      public ICollection<Course> Courses { get; set; }
    } 
Course  public class Course
    {
      public int Id { get; set; }

      public string Name { get; set; }

      public ICollection<Student> Students { get; set; }
    }OnModelCreating中配置 modelBuilder.Entity<Student>()
                .HasMany(r => r.Courses)
                .WithMany(r => r.Students)
                .UsingEntity(r => r.ToTable("StudentCourse"));
            #endregion
            base.OnModelCreating(modelBuilder); 
注解形式
数据注解通过实体类的属性添加特性来指定配置信息

[*]指定主键属性
[*]指定必填属性(非空)
[*]最大为100的长度,字符串属性的最大长度
[*] 用于指定属性列对应的数据库列名
[*]用于指定实体对应数据库的表名
[*]:用于指定外键属性
[*] 

[*] 

来源:https://www.cnblogs.com/xiaoxi888/archive/2023/07/18/17562757.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: netcore模型配置