Im работая с EntityFramework и мне нужен какой-то метод, который будет синхронизировать входящие списки объектов с базой данных (перезаписать описание записей или пометить их как устаревшие):Generic тип T в качестве имени переменной
public void Synchronize<T>(List<T> entityList)
{
//do something
}
Прежде всего мне нужно получить все данные из соответствующей таблицы и получить разницу между двумя списками (одна неизменная вещь - GUID записи). Например, если тип входящего EntityList является пользователь, то мне нужно, чтобы получить все данные из таблицы «User» и т.д.
Это не работает:
var query = from entity in typeof(T)
select entity;
Конечно, я могу сделать это старинке:
switch (typeof(T).Name)
{
case "User":
var query = from user in User
select user;
//Sync with User table
break;
case "Project":
var query = from project in Project
select project ;
//Sync with Project table
break;
}
Но, может быть, есть элегантный способ справиться с общим? Потому что у меня есть много таблиц для синхронизации. Благодаря!
Возможно, я ошибаюсь, но, похоже, вы пытаетесь заставить использовать дженерики - когда на самом деле функциональность того, что вы пишете, в любом случае зависит от типа (т. Е. Не очень общего). Вы уверены, что дженерики здесь подходят? –
Вам не нужны (не должны) генераторы, когда код внутри вашего метода не является общим. –
мой код может использоваться с общим, как я думаю, потому что все мои сущности, которые будут синхронизированы, выходят из ActiveDirectory, и все они включают в себя свойства Guid, Description, Name и Obsolete. Вот почему я могу попробовать использовать дженерики здесь. – Szer