跟踪Entity Framework中用户定义属性的OriginalValue

时间:2016-03-06 01:00:27

标签: c# .net entity-framework dbcontext partial-classes

假设我有一个与表Role具有1:1关系的数据库表User。 Entity Framework生成的类将是:

// Generated by Entity Framework
public partial class User
{
    public int ID { get; set; }
    public string Name { get; set; }
    public Guid RoleID { get; set; }
    public Role Role { get; set; }
}

现在出于审计目的,我想保存角色名称,所以我用自己的属性定义自己的部分类:

// Written by myself
public partial class User
{
    public string RoleName {get { Role.Name; }}
} 

我如何告诉EntityFramework跟踪User.RoleName就像跟踪User.Name一样?

var modifiedEntities = ChangeTracker.Entries();
foreach (var change in modifiedEntities)
{
    var name = change.Property("Name").OriginalValue; // ok
    var roleName = change.Property("RoleName").OriginalValue; // gives error
}

错误说“成员'OriginalValue'无法在'User'类型的实体上为属性'RoleName'调用,因为该属性不是实体数据模型的一部分。”

0 个答案:

没有答案