如何使用Entity Framework将列名称及其值添加到数组元组列表中

时间:2014-03-05 16:28:26

标签: c# entity-framework c#-4.0 entity-framework-6 c#-5.0

我想在实体框架的元组数组列表中获得“列名,列值”。

我有这个:

var colNames = typeof(tbl_ObisSchema).GetProperties().Select(a => a.Name).ToList();

获取所有列名称

 using (var dbContext = new db_ReadyEngine_MSSQL())
{
 var colNames = typeof(tbl_ObisSchema).GetProperties().Select(a => a.Name).ToList();

 List<Tuple<string, string>> list = new List<Tuple<string, string>>();
 list.Add(Tuple.Create(ColumnName, ColumnValue));

}

怎么做的? 非常感谢...

1 个答案:

答案 0 :(得分:2)

一个专栏本身是不够的;您需要读取特定实体的列值。

拥有实体后,您可以使用the DbContext.Entry method获取该实体的DbEntityEntry实例。然后,CurrentValues property将允许您访问该实体的当前属性值。

using (var dbContext = new db_ReadyEngine_MSSQL())
{
    var entity = dbContext.Set<tbl_ObisSchema>().Find(thePrimaryKeyToFind);
    if (entity == null) throw new InvalidOperationException("Record not found");

    var entry = dbContext.Entry(entity);
    var currentPropertyValues = entry.CurrentValues;

    List<Tuple<string, object>> list = currentPropertyValues.PropertyNames
        .Select(name => Tuple.Create(name, currentPropertyValues[name]))
        .ToList();

    // Do something with the list...
}