我有以下POCO实体:
public class User
{
[...other properties...]
public byte Status { get; set; }
public DateTime? DataStatus { get; set; }
}
我想要的:在属性set
的{{1}}方法内,使用当Status
更改时的当前日期更新DataStatus
,是否可能?
答案 0 :(得分:0)
如果您首先使用代码,则可以将该属性备份到私有字段并实现您自己的getter和setter。如果您首先使用DB / Model,则可以覆盖生成的类中的方法,因为它们是部分的。我猜你的例子,你可以做到以下几点。
public class User
{
private byte _status;
public byte Status
{
get { return _status; }
set
{
_status = value;
this.DataStatus = DateTime.Now;
}
}
public DateTime? DataStatus { get; set; }
}
答案 1 :(得分:0)
public void SetupDbContext(DbContext context)
{
(DbContext as System.Data.Entity.Infrastructure.IObjectContextAdapter).ObjectContext.SavingChanges += delegate(object sender, EventArgs e)
{
var modified = context.ChangeTracker.Entries<User>().Where(entry => entry.State == EntityState.Modified);
foreach (var entry in modified)
{
if (entry.Property("Status").IsModified)
{
entry.Entity.DataStatus = DateTime.Now;
}
}
};
}
答案 2 :(得分:-1)
当然,这很简单。您必须使用支持字段属性而不是自动属性:
public class User
{
private byte _status;
public byte Status
{
get { return _status; }
set
{
_status = value;
DataStatus = DateTime.Now;
}
}
public DateTime? DataStatus { get; set; }
}
答案 3 :(得分:-1)
如果您使用带有支持属性的变量,而不是自动属性:
public class User {
private byte m_Status;
private DateTime? m_DataStatus;
public byte Status {
get { return m_Status; }
set { m_DataStatus = DateTime.Now; m_Status = value; }
}
public DateTime? DataStatus {
get { return m_DataStatus; }
set { m_DataStatus = value; }
}
}