2

私は次のPOCOエンティティを持っています:

public class User 
{
    [...other properties...]

    public byte Status { get; set; }
    public DateTime? DataStatus { get; set; }  
}

私が欲しいもの:setプロパティのメソッド内で、変更されたときに現在の日付Statusで更新することは可能ですか?DataStatusStatus

4

4 に答える 4

0

最初にコードを使用している場合は、プロパティをプライベート フィールドに戻し、独自のゲッターとセッターを実装するだけです。最初に 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; }
}
于 2012-10-16T18:59:27.497 に答える
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;
            }
        }
    };
}
于 2012-10-17T08:30:44.197 に答える
-1

確かに、それはかなり簡単です。自動プロパティの代わりにバッキング フィールド プロパティを使用する必要があります。

public class User
{

    private byte _status;
    public byte Status
    {
        get { return _status; }
        set
        {
            _status = value;
            DataStatus = DateTime.Now;
        }
    }
    public DateTime? DataStatus { get; set; }
}
于 2012-10-16T19:01:08.660 に答える
-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; }
    }
}
于 2012-10-16T19:03:10.530 に答える