ToB企服应用市场:ToB评测及商务社交产业平台
标题:
netcore模型配置
[打印本页]
作者:
干翻全岛蛙蛙
时间:
2023-7-18 15:53
标题:
netcore模型配置
模型配置可以通过Fluent API和注解的方式
FluentAPI步骤
新建Products 和Category类新建Products类
Products
public 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);
复制代码
注解形式
数据注解通过实体类的属性添加特性来指定配置信息
[Key]指定主键属性
[Require]指定必填属性(非空)
[MaxLength(100)]最大为100的长度,字符串属性的最大长度
[ColumnName("ProductName")] 用于指定属性列对应的数据库列名
[Table("Products")]用于指定实体对应数据库的表名
[ForeignKey("ColumnID")]:用于指定外键属性
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4