netcore模型配置

这篇具有很好参考价值的文章主要介绍了netcore模型配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

  1. FluentAPI步骤
    1.  新建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; }
          }
  2. 他们之间存在一对多的关系
配置实体属性
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);

 

注解形式
数据注解通过实体类的属性添加特性来指定配置信息文章来源地址https://www.toymoban.com/news/detail-577481.html

  • [Key]指定主键属性
  • [Require]指定必填属性(非空)
  • [MaxLength(100)]最大为100的长度,字符串属性的最大长度
  • [ColumnName("ProductName")] 用于指定属性列对应的数据库列名
  • [Table("Products")]用于指定实体对应数据库的表名
  • [ForeignKey("ColumnID")]:用于指定外键属性
  •  
  1.  

到了这里,关于netcore模型配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 语音识别功能测试:90%问题,可以通过技术解决

    现在市面上的智能电子产品千千万,为了达到人们使用更加方便的目的,很多智能产品都开发了语音识别功能,用来语音唤醒进行交互;另外,各大公司也开发出来了各种智能语音机器人,比如小米公司的“小爱”,百度公司的“小度”,三星公司的“bixby”,苹果的“siri”

    2024年02月03日
    浏览(41)
  • 小程序可以通过以下几种方式下发消息

    1.模板消息 小程序可以通过模板消息向用户发送通知,例如订单状态更新、活动提醒等。开发者需要先在小程序后台设置好模板消息,并获取到模板消息的模板ID。然后在代码中调用相应的API,将模板消息的内容填充并发送给用户。 以下是一个示例代码,用于发送小程序模板

    2024年02月07日
    浏览(41)
  • 设备分散怎么办? 可以通过链路层发现协议

    大型网络中,连接清晰是很重要滴。网络越大,逻辑上和物理上都越难理清。再加上还有冗余链路和链路聚合,会大大增加理清网络中设备互连情况的难度。而且,问题还不止于此。混合使用来自不同供应商的网络产品,会让设备发现协议无所适从。 首先,我要讲一个背景故

    2024年02月07日
    浏览(48)
  • Vue3:通过路由写多个页面,通过不同的路径可以进入不同的页面

    Vue3:想通过路由写2个页面,不同的路径可以进入不同的页面 1、创建Vue3项目 通过脚手架创建一个Vue3的项目,然后在此基础上对文件进行增删改,修改成自己需要的项目框架 2、views文件夹 对应 页面文件 如果需要写2个页面,则在views文件夹里面创建2个.vue文件 可以在.vue文件

    2024年02月11日
    浏览(43)
  • 电脑可以通过蓝牙发送文件吗?电脑蓝牙怎么发送文件

    蓝牙(bluetooth)是一种支持设备短距离通信的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。蓝牙技术让数据传输变得更加迅速高效,为无线通信拓宽道路。随着蓝牙技术的发展,其应用领域越来越广泛,那么,

    2024年02月09日
    浏览(70)
  • 制造企业可以通过数字工厂管理系统降低采购成本吗

    制造企业可以通过数字工厂管理系统降低采购成本。制造业数字工厂系统是一种基于数字化技术的管理系统,可以帮助企业实现生产过程的数字化管理,提高生产效率和降低生产成本。下面具体介绍数字工厂管理系统如何降低制造企业的采购成本。   一、优化采购计划 数字

    2024年02月11日
    浏览(45)
  • 超实用:通过文字就可以操纵这款AI表格

    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。 今天给大家分享超实用的AI表格 ChatExcel ,这个工具是由北大团队在2022年3月开始开发的AI表格处理神器,上传你的表格后,只需要用文字描述你的需求,不需要你懂excel函数,AI就会自动帮你

    2024年02月05日
    浏览(46)
  • 将一张RGB图像转换为BGR格式可以通过以下步骤实现

    读取图像:使用图像处理库(如OpenCV)读取一张RGB格式的图像,并将其存储为NumPy数组。 转换通道顺序:使用np.transpose函数将图像数组的通道顺序从RGB转换为BGR。 在这里,np.transpose函数的第一个参数是图像数组,第二个参数是元组,表示要交换的维度顺序。由于RGB格式的图像

    2024年02月11日
    浏览(69)
  • python函数可以通过列表索引放到button事件 by chatgpt

    Python函数可以通过列表索引放到按钮事件中。在按钮事件处理函数中,你可以使用`event.widget`属性获取触发事件的按钮,然后使用`grid_info()`方法获取按钮的行和列索引,最后使用索引从列表中获取函数并调用它。   以下是示例代码:   ```python import tkinter as tk   # 创建主窗口

    2023年04月25日
    浏览(57)
  • 考研证件照可以自己用手机拍吗?考研证件照p过可以通过审核吗?考研证件照有什么要求

    现在的智能手机相机技术先进,大多都配备了高像素摄像头,使得自拍照片的质量有了大幅提升。相较于传统的证件照拍摄,使用手机自拍考研证件照理论上是可行的。然而,考研证件照需要满足一定的规定和标准,包括照片的背景颜色、人物的服装、姿势等方面。 在拍摄考

    2024年02月19日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包