Как получить имена столбцов и их значения в список кортежей массива с Entity Framework

c# c#-4.0 c#-5.0 entity-framework entity-framework-6

Вопрос

Я хотел бы получить «Column Name, Column's Value» в списке массивов tuple с инфраструктурой сущности .

У меня есть это:

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));

}

Как это сделано? Большое спасибо...

Принятый ответ

Столбец сам по себе недостаточно; вам нужно будет прочитать значения столбцов из определенного объекта.

Когда у вас есть сущность, вы можете использовать метод DbContext.Entry для получения экземпляра DbEntityEntry для этого объекта. Свойство CurrentValues затем предоставит вам доступ к текущим значениям свойств для этого объекта.

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...
}



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему