假设我有两张表:
Category
---------
Id
Name
Expense
---------------
Id
Name
CategoryId
Amount
如果有人通过用户界面更改了费用的详细信息,我如何获取费用类别的旧值和新值的详细信息?
到目前为止,我在ObjectContext
课程中已经有了这个。
public override int SaveChanges(SaveOptions options)
{
foreach (var entry in ObjectStateManager
.GetObjectStateEntries(
System.Data.EntityState.Modified))
{
if (entry.Entity is Expense)
{
var oldName = entry.OriginalValues["Name"];
var newName = entry.CurrentValues["Name"];
Debug.Print(
string.Format(
"The name of an expense changed from '{0}' to '{1}'",
oldName, newName));
// How do I get the old and new values of the Expense
// entity's relations/navigational properties
// such as the old and new values of
// Expense.Category.Name?
}
}
return base.SaveChanges(options);
}
澄清:
我必须补充一点,我知道如何使用另一个上下文获取这些属性,即在新的entry.Entity
实例中找到ObjectContext
,然后加载导航属性新ObjectContext
实例中的Expense对象。
我的问题是 - 是否可以在不加载新上下文的情况下执行此操作?是否可以仅使用ObjectStateEntry
对象来读取ObjectStateEntry.Entity
对象的非标量/导航属性值?