gpt4 book ai didi

.net - 如何将 ObjectStateEntry.OriginalValues 转换为实体?

转载 作者:行者123 更新时间:2023-12-02 00:57:06 24 4
gpt4 key购买 nike

如何将ObjectStateEntry.OriginalValues转换为Entity?我认为我可以使用 ObjectContext.Translate 方法来做到这一点,但我必须传递 DataReader 。有什么办法吗?

最佳答案

为了将 OriginalValues 转换为 Entity 对象,您可以对属性使用反射(您将名称埋在 OriginalValues.DataRecordInfo.FieldMetadata[i ].FieldType.Name)。不过,之后你打算做什么?逐个比较实体的属性?直接获取修改后的属性列表会更容易:

var originalValues = yourEntry.OriginalValues;
var currentValues = yourEntry.CurrentValues;
var modifiedProperties = yourEntry.GetModifiedProperties();

foreach (var modifiedProperty in modifiedProperties)
{
LogChange(string.Format("Property: {0}, Original value: {1}, Current value: {2}",
modifiedProperty,
originalValues[modifiedProperty],
currentValues[modifiedProperty])
);
}

或者,您可以为实体对象实现 OnSomePropertyChanging 方法并实时记录更改:

public partial class YourEntity
{
partial void OnSomePropertyChanging(string value)
{
LogChange(String.Format("Property: SomeProperty, Original value: {0}, Current value: {1}, Change time: {2}",
this.SomeProperty,
value,
DateTime.Now.ToShortTimeString())
);
}
}

关于.net - 如何将 ObjectStateEntry.OriginalValues 转换为实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3686688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com