实体模型类的属性设置器是否设置为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设为私有
标题>这是因为通常(在设计方面),实体是一个对象,您将传递它来显示数据或更新它。
因此,当实体被实例化时,您需要使用来自存储(或来自表示层的输入)的数据填充属性。
。Person person = PersonService.GetById(personId);
假设PersonService通过实体框架调用并找到Id与personId匹配的单个Person记录,那么它将用检索到的值填充"Person"实体。
对于实体框架填充实体,字段需要是可公开设置的。
如果通过代码或用户输入,更改了人员的姓名,则Id将用于更新的SaveChanges()方法。
当检查一个实体的属性时:
如果Id为0,那么它将被视为一个新实体,并且应该在SaveChanges()上"添加"到存储中。
如果Id> 0,那么它应该在SaveChanges()上更新。
如果Id字段是私有设置的,那么在填充其余属性之后,类将需要一种方法(内部)从其他地方获取当前实体的Id -这没有多大意义。