C# rookie. Ниже мой код уже несколько часов пытается получить это, чтобы обновить некоторые поля в моей БД и попробовал много разных реализаций без везения.Динамический LINQ - Entity Framework 6 - Обновление записей для динамического выбора
// Select all fields to update
using (var db = new Entities())
{
// dbFields are trusted values
var query = db.tblRecords
.Where("id == " + f.id)
.Select("new(" + string.Join(",", dbFields.Keys) + ")");
foreach (var item in query)
{
foreach (PropertyInfo property in query.ElementType.GetProperties())
{
if (dbFields.ContainsKey(property.Name))
{
// Set the value to view in debugger - should be dynamic cast eventually
var value = Convert.ToInt16(dbFields[property.Name]);
property.SetValue(item, value);
// Something like this throws error 'Object does not match target type'
// property.SetValue(query, item);
}
}
}
db.SaveChanges();
}
Приведенный выше код при выполнении не приводит к каким-либо изменениям в БД. Очевидно, что этот код нуждается в очистке, но я пытаюсь заставить базовые функции работать. Я верю, что мне может потребоваться, чтобы каким-то образом повторно применить «элемент» обратно в «запрос», но мне не повезло, что он работал независимо от того, какую реализацию я стараюсь, я всегда получаю «Объект не соответствует типу цели», ,
Эта полуполюсная проблема подтверждает это, но мне не очень понятно, так как я использую запрос Dynamic LINQ и не могу просто ссылаться на имена свойств напрямую. https://stackoverflow.com/a/25898203/3333134
Зачем вам нужен этот 'Select (" новый ... 'Если? вы удаляете 'Select', у вас будут сущности из' tblRecords'. Изменение этих параметров приведет к изменениям, которые отслеживаются EF. –