首页 > 编程语言 >在使用C# efcore时,发现一个关于对象导航属性神奇的现象

在使用C# efcore时,发现一个关于对象导航属性神奇的现象

时间:2023-01-17 17:35:49浏览次数:52  
标签:set get C# asset efcore Department public 神奇

如果你在导航属性默认了一个新的对象,那么在efcore生成的SqL中生成一条新的插入数据到导航属性的表中

举例:

 

public class Asset 
{ 
  public int AssetId {get;set;} public int DeptId {get;set;} public virtual Department? Department { get; set; } = new Department(); }

 

在配置好Fluent API后

public class AssetTypeConfig: IEntityTypeConfiguration<Asset>
    {
        public void Configure(EntityTypeBuilder<Asset> builder)
        {
            builder.HasKey(asset=>asset.AssetId);

            builder
                .HasOne(asset => asset.Department)
                .WithMany()
                .HasForeignKey(asset => asset.DeptId);
        }
    }

 

如果你是要修改Asset这个类的数据,然后你会神奇发现

在Department数据表里面会自动的创建一条空的Department数据,将起修改为:

public virtual Department? Department { get; set; }

这样再修改Asset就不会自动插入一条空的Department数据了。

估计这是Efcore的一种机制吧。

标签:set,get,C#,asset,efcore,Department,public,神奇
From: https://www.cnblogs.com/my85016629/p/17058364.html

相关文章

  • FPGA综合实验 04 - | ADC采样控制电路设计
    一、实验目的和任务     学习用状态机对A/D转换器ADC0809的采样控制电路的实现。二、设计代码(或原理图)、仿真波形及分析1、ADC控制电路代码moduleADC0809(D,CLK,EOC,......
  • JDBC对象解释
             ......
  • RabbitMQ学习笔记07:RPC
    参考资料:RabbitMQtutorial-Remoteprocedurecall(RPC)—RabbitMQ  RemoteProcedureCallWhatthistutorialfocuseson在RabbitMQ学习笔记03:WorkQueues......
  • C#.Net开发chatGPT、openAI
    C#/.Net开发chatGPT、openAI最近ChatGPT火爆了,自己使用了一下,确实厉害。但是使用官方网站不支持国内访问,好在国内可以使用API调用,所以自己折腾一番,使用C#来调用API。获取......
  • 帝国CMS编辑器word一键上传
    ​ 这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下)<%@ page language="java"......
  • Centos 7 离线升级内核
    1.查看现在的内核版本uname-r 2.下载内核RPM包https://elrepo.org/linux/kernel/el7/x86_64/RPMS/3.选择rpm包,lt长期维护版ml最新稳定版,下载下图红框选中的文件......
  • SimplCommerce 核心
    EF配置usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;usingMicrosoft.EntityFrameworkCore;usingMicrosoft......
  • Mac上优秀的虚拟机软件推荐 PD Parallels Desktop 18.1.1
    APPERK软件信息 软件名称ParallelsDesktop版本号18.1.1软件类型官网版+商业版安装包大小390MB语言中文系统支持macOS11及以上(M芯片原生)......
  • 切面Aspect实现方法return后执行某些动作
    1.定义注解@Retention(RUNTIME)//运行时注解@Target(METHOD)//代表注解是修饰在方法上的public@interfaceOperationHis{Stringvalue();//可以指定注解里......
  • CentOS 7 修改日志时间戳格式
    CentOS7修改日志时间戳格式https://blog.51cto.com/babyshen/2142254默认的时间戳格式是Jul1413:30:01localhostsystemd:StartingSession38ofuserroot.1.看......