首页 > 其他分享 >充血模型的EFCore实现

充血模型的EFCore实现

时间:2024-07-31 11:31:13浏览次数:4  
标签:构造方法 实现 模型 充血 private PhoneNumber EFCore public 属性

充血模型的五个需求

  1. 属性是只读的或者只能被类内部的代码修改。

     public PhoneNumber PhoneNumber { get; private set;}
     public void ChangePassword(string password)
     {
         if (password.Length <= 3)
         {
             throw new ArgumentOutOfRangeException("密码长度需要大于3");
         }
         this.passwordHash = HashHelper.Hash_2_MD5_16(password, false);
    
     }
    

    实现

    属性是只读的或者是只能被类内部的代码修改。

    实现:把属性的set定义为private或者init,然后通过构造方法为这些属性赋予初始值。

  2. 定义有参数的构造方法。

      public Guid Id { get; init; }
      public PhoneNumber PhoneNumber { get; private set; }
     //构造函数,在一开始创建对象时就被初始化
     public User(PhoneNumber phoneNumber)
     {
         this.Id = Guid.NewGuid();
         this.PhoneNumber = phoneNumber;
         this.UserAccessFail = new UserAccessFail(this);
     }
    

    实现

    定义有参数的构造方法。
    原理:EF Core中的实体类如果没有无参的构造方法,则有参的构造方法中的参数的名字必须和属性的名字一致。
    实现方式1:无参构造方法定义为private。
    实现方式2:实体类中不定义无参构造方法,只定义有意义的有参构造方法,但是要求构造方法中的参数的名字和属性的名字一致。

  3. 有的成员变量没有对应的属性,但是这些成员变量需要映射为数据表中的列,也就是我们需要把私有的成员变量映射到数据表中的列。

    private string? passwordHash;
    //这个成员变量不需要为外部得知,但是需要保存到数据库中
    

    实现

    不属于属性的成员变量映射为数据列。
    实现:
    builder.Property("成员变量名”)

  4. 有的属性是只读的,也就是它的值是从数据库中读取出来的,但是我们不能修改属性的值。

    private string ID;
    //这个属性只能从数据库读出来,不能在数据库以外进行更改。
    //内部计算列
    

    实现

    从数据列中读取值的只读属性。
    EF Core中提供了“支持字段”(backing field)来支持这种写法:在配置实体类的代码中,使用HasField(“成员变量名”)来配置属性。

  5. 有的属性不需要映射到数据列,仅在运行时被使用。

    内部使用的属性,不在数据库中生成对应的列
    

实现

有的属性不需要映射到数据列,仅在运行时被使用。
实现:使用lgnore()来配置忽略这个属性。

前三种比较常见,后两种并不常见。

标签:构造方法,实现,模型,充血,private,PhoneNumber,EFCore,public,属性
From: https://www.cnblogs.com/guan-tou6/p/18334240

相关文章

  • 【Stable Diffusion真人大模型】再次升级!太逼真了!SD1.5模型超高真实度,细腻程度媲美XL
    前言AWPortraitWW模型再次升级,大佬**“DynamicWang”**于7月4日发布最新升级版本AWPortraitWW1.1版本。本次升级在画质表现上再一次提升。根据大佬所述该款模型的直出效果在细腻程度媲美XL和DIT架构的模型,在语义理解、人种及面部多样性上同样有了很大的提升,尤其是在棚拍及......
  • 【大模型本地知识库搭建】ChatGLM3,M3E,FastGPT,One-API_fastgpt m3e
    目录引言一、ChatGLM3大模型本地部署二、部署M3E模型三、部署One-API四、部署FastGPT引言本文技术路线为:利用ChatGLM3-6b作为基座大模型,M3E作为向量模型,基于FastGPT建立用户知识库,One-API做统一API接口管理。其中ChatGLM3和M3E模型都是在windows下部署的,FastGPT......
  • 使用 keras 模型对函数进行 Python 类型提示
    如果我创建这样的函数:defmdl(input_shape):model=Sequential()model.add(Conv2D(depth=64,kernel_size=(3,3),input_shape=input_shape,activation='relu'))model.add(Dense(32),activation='relu')model.add(Dropout(0.3))m......
  • 测试 MT5 模型,该模型在 xl-sum 数据集上进行了阿拉伯语摘要的微调
    mt5模型在XL-SUM阿拉伯语数据集的10个epoch上进行了良好的微调,但在测试模型时,结果是垃圾、特殊字符和一些英文字符。这是什么原因?我需要解决这个问题以下是MT5模型在阿拉伯语摘要任务中微调后产生乱码、特殊字符和英文的原因,以及可能的解决方案:可能的原......
  • IndexError:2 维张量索引过多,Blackjack 模型
    我目前正在开发一个Blackjack纸牌检测项目,但由于标题中的IndexError而陷入停顿。我说其他几个线程也有类似的问题,但代码看起来与我的完全不同,所以我认为值得自己询问。我不确定如何修复这个错误,所以任何建议或指针都是不胜感激。下面是回溯和代码。IndexError......
  • 通过预训练模型预测对象不起作用
    我想通过给定图像作为输入来预测对象,并希望我的模型能够预测标签。我已经使用基于带注释的数据库的张量流训练了一个模型,其中要预测的目标对象已添加到预训练模型中。我正在使用的代码如下,我将目标对象图像设置为输入并希望获得预测输出:classMultiObjectDetection():def......
  • GPT1-3及BERT的模型概述
    GPT1-3及BERT的模型概述(2020年5月之前LLMs主流模型)GPT-1(2018年6月)......
  • 书生浦语夏令营——8G 显存玩转书生大模型 Demo
    书生浦语夏令营——8G显存玩转书生大模型Demo配置环境按照教程来即可condacreate-ndemopython=3.10-ycondaactivatedemocondainstallpytorch==2.1.2torchvision==0.16.2torchaudio==2.1.2pytorch-cuda=12.1-cpytorch-cnvidia-y#这里合并成一个命令pip......
  • 门控循环单元(GRU)预测模型及其Python和MATLAB实现
    ##一、背景循环神经网络(RNN)是处理序列数据的一类神经网络,尤其适用于时间序列预测、自然语言处理等领域。然而,传统的RNN在长序列数据的训练中面临梯度消失和爆炸的问题,导致模型对长期依赖的学习能力不足。为了解决这一问题,研究人员提出了多种改进的RNN结构,其中包括长短期记忆......
  • 长短期记忆网络(LSTM)预测模型及其Python和MATLAB实现
    ##LSTM预测模型背景长短期记忆网络(LongShort-TermMemory,LSTM)是一种特殊的递归神经网络(RNN),于1997年首次由SeppHochreiter和JürgenSchmidhuber提出。LSTM主要用于处理和预测序列数据中的时间依赖关系,能够有效地解决传统RNN在处理长序列时遇到的梯度消失和梯度爆炸问题。因......