实体模型类的属性设置器是否设置为private

本文关键字:设置 是否 private 实体模型 属性 | 更新日期: 2023-09-27 17:54:32

由于主键PassageId将自动创建并且不能更改,因此暴露PassageId的setter没有意义(至少对我来说)。PassageId的设置器应该设置为private吗?

public class Passage
{
    public int PassageId { get; private set; }
    public string Contents { get; set; }
    public DateTime CreatedUtc { get; private set; }
    public DateTime ModifiedUtc { get; private set; }
}
<标题>注意

我读过的大多数教程,作者总是使用Visual Studio快捷键prop输入(两次)生成的默认属性,生成类似

的内容。
public type PropertyName {get; set;}

所以我想知道为什么他们不把setter设为私有

实体模型类的属性设置器是否设置为private

这是因为通常(在设计方面),实体是一个对象,您将传递它来显示数据或更新它。

因此,当实体被实例化时,您需要使用来自存储(或来自表示层的输入)的数据填充属性。

Person person = PersonService.GetById(personId);

假设PersonService通过实体框架调用并找到Id与personId匹配的单个Person记录,那么它将用检索到的值填充"Person"实体。

对于实体框架填充实体,字段需要是可公开设置的。

如果通过代码或用户输入,更改了人员的姓名,则Id将用于更新的SaveChanges()方法。

当检查一个实体的属性时:

如果Id为0,那么它将被视为一个新实体,并且应该在SaveChanges()上"添加"到存储中。

如果Id> 0,那么它应该在SaveChanges()上更新。

如果Id字段是私有设置的,那么在填充其余属性之后,类将需要一种方法(内部)从其他地方获取当前实体的Id -这没有多大意义。

相关文章: