C# 在创建更新场景中处理私有setter和id
问题是如何在这里处理Id属性以创建和更新。 我是否需要在构造函数中增加一个id属性为的构造函数来创建操作C# 在创建更新场景中处理私有setter和id,c#,.net,oop,C#,.net,Oop,问题是如何在这里处理Id属性以创建和更新。 我是否需要在构造函数中增加一个id属性为的构造函数来创建操作 public abstract class Entity { public Guid Id { get; set; } } public class Family : Entity { public string FirstName { get; private set; } public string LastName { get; private set; }
public abstract class Entity
{
public Guid Id { get; set; }
}
public class Family : Entity
{
public string FirstName { get; private set; }
public string LastName { get; private set; }
public Family(string fname, string lname)
{
FirstName = fname;
LastName = lname;
}
}
这是私有setter的推荐方法吗?因为
实体
是抽象的,并且您知道您希望通过构造函数设置Id
,并且您的对象是不可变的,所以您可以通过继承来实现
任何派生类型都将被迫调用基本构造函数来设置Id
// create
var id = Guid.NewGuid();
var new = new Family(id, "John", "Doe");
// update
var dbData = _context.Families.FirstOrDefault(x=> x.Id == id);
var updated = new Family(dbData.FirstName, db.Data.LastName);
public abstract class Entity
{
public Guid Id { get; private set; }
public Entity(Guid id)
{
Id = id == Guid.Empty ? Guid.NewGuid() : id;
}
}
public class Family : Entity
{
public string FirstName { get; private set; }
public string LastName { get; private set; }
public Family(string fname, string lname, Guid id = default) : base(id)
{
FirstName = fname;
LastName = lname;
}
}