如何访问EF对象上下文CurrentObjectContext_SavingChanges方法中的“属性”值

时间:2013-12-13 07:30:10

标签: c# entity-framework

我想使用自定义开发的“Auditable”属性来跟踪我的“POCO”对象。必须跟踪具有audit-able属性的对象的CRUD操作。为此,我覆盖了对象上下文的保存更改方法。但我不确定如何在保存方法中访问每个实体对象的属性值(是否存在属性)。任何帮助表示赞赏...

我正在使用EF 6.0。

using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using Nido.Common.Utilities.Attributes;

namespace DemoTest.Bll.Models
{
    /// <summary>
    /// Created by MAS IT
    /// </summary>
    [Auditable]
    public class Address : BaseObject
    {
       // Your code here
    }
}

ObjectContext保存方法是这个..

private void CurrentObjectContext_SavingChanges(object sender, EventArgs e)
{
 // if auditable then
 // Tracking code comes here
}

1 个答案:

答案 0 :(得分:1)

取决于您的属性类实际上是AuditableAttribute还是仅Auditable

您需要使用System.Linq,然后您可以执行以下任一操作:

if (sender !=null && 
    sender.GetType().GetCustomAttributes().OfType<AuditableAttribute>().Any())

if (sender !=null && 
    sender.GetType().GetCustomAttributes().OfType<Auditable>().Any())