gpt4 book ai didi

c# - 获取实体的属性列表

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:51 25 4
gpt4 key购买 nike

我正在使用 Entity Framework 。

我想在对象的 EntityState 为“已添加”时获取实体的属性列表,并循环遍历它们。

这是我正在做的示例代码。

var newEntities = ObjectStateManager.GetObjectStateEntries(EntityState.Added);
foreach (var entry in newEntities)
{
var entityName = entry.EntitySet.Name;
var newProps = ObjectStateManager.GetObjectStateEntry(entry.EntityKey).GetModifiedProperties();
var currentNewValues = ObjectStateManager.GetObjectStateEntry(entry.EntityKey).CurrentValues;

foreach (var propName in newProps)
{
var newValue = currentNewValues[propName];
}
}

如你所见,我使用

ObjectStateManager.GetObjectStateEntry(entry.EntityKey).GetModifiedProperties();

获取属性列表,但它仅在 State 为 EntityState.Modified 时有效。

谢谢。

这是执行我的需求的方法

有了它,我可以获得一个实体的所有属性并获得他的值。

 var newEntities = ObjectStateManager.GetObjectStateEntries(EntityState.Added);
foreach (var entry in newEntities)
{
if (entry.State == EntityState.Added)
{
var prop = entry.Entity.GetType().GetProperties();
var entityName = entry.EntitySet.Name;

var currentNewValues = ObjectStateManager.GetObjectStateEntry(entry.EntityKey).CurrentValues;
foreach (var propName in prop.Where(p => p.PropertyType.Namespace == "System"))
{
var newValue = currentNewValues[propName.Name];
}
}
}

最佳答案

foreach (var entry in newEntities)
{
if (entry.State == EntityState.Added)
{
// continue and get property list
var currentValues = entry.CurrentValues;
for (var i = 0; i < currentValues.FieldCount; i++)
{
var fName = currentValues.DataRecordInfo.FieldMetadata[i].FieldType.Name;
var fCurrVal = currentValues[i];
}
}
}

关于c# - 获取实体的属性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7572912/

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