Выбрать столбец из неуниверсального DbSet? - PullRequest
0 голосов
/ 23 января 2012

Я хочу реализовать функцию, которая принимает DbSet (не универсальный), string и object и возвращает DbSet.что-то вроде следующего псевдонима:

public static DbSet Any(DbSet set, string propertyName, objectParameter)
{
  var tableName = set.TableName;
  var columnName = set.GetColumnNameForProperty(propertyName); 
  var query = string.Format("SELECT TOP(1) {0} FROM {1} WHERE {0} = {2}",
                columnName, 
                tableName,
                objectParameter);
}

Я думаю, что SQL-запроса достаточно, так как я смогу выполнить его непосредственно в базе данных (context.Database.ExecuteSql).

Что я хочудля этого нужно получить имя таблицы из заданного DbSet, затем имя столбца в базе данных.

1 Ответ

1 голос
/ 23 января 2012

Это не возможно из не универсального DbSet, но эту проблему легко решить с помощью:

public static IEnumerable<T> Any(DbSet<T> set, string property, objectParameter)
  where T : class
{ ... }

Возвращение DbSet не имеет смысла, потому что после запроса данных это не DbSet больше.

Большая проблема заключается в получении имени таблицы из универсального DbSet / ObjectSet, поскольку эта информация недоступна для этих классов.Получить его практически невозможно, потому что требует доступа к закрытым элементам предметов из MetadataWorkspace.

...