由于主键PassageId
将自动创建且无法更改,因此公开PassageId
的设置器没有意义(至少对我而言)。是否应将PassageId
的设置者设置为私有?
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;}
所以我想知道为什么他们没有让这个设定者变得私密。
答案 0 :(得分:1)
这是因为通常(设计方面),实体是一个对象,您将传递它来显示数据或更新它。
因此,在实例化实体时,您需要使用存储中的数据(或来自表示层的输入)填充属性。
E.g。 Person person = PersonService.GetById(personId);
鉴于PersonService调用实体框架并找到Id匹配personId的单个Person记录,它将填充该人员'具有检索值的实体。
要为实体框架填充实体,需要公开设置字段。
如果通过代码或用户输入更改了人的姓名,则会在SaveChanges()方法上使用Id进行更新。
检查实体的属性时:
如果Id为0,则将其视为新实体,并且应该添加'存储在SaveChanges()。
如果Id是> 0然后它应该在SaveChanges()上更新。
如果要私下设置Id字段,在填充其余属性之后,该类将需要一种方法(内部)从其他地方获取当前实体的Id - 不会有多大意义