У меня есть база данных с множеством разных наборов данных. Я хочу, чтобы сделать его легко найти различные наборы данных в зависимости от различных параметров, например, я в настоящее время:умный способ получить данные из базы данных через уровень доступа к данным?
public List<Dataset> GetAllDatasetsByMethod(Method method)
с этим запросом:
var datasets = from b in db.Method where b.Id == method.Id select b.Dataset;
, а затем я еще один метод, глядя, как это :
public List<Dataset> GetAllDatasetsByTargetMaterial(TargetMaterial material)
и запрос так:
var datasets = from b in db.Dataset
where b.TargetMaterial.Name.ToLower() == material.Name.ToLower()
select b;
Я получил много таких методов (например, 10-15), сравнивая эфир с уникальным идентификатором или именем. и мне нужно сделать больше, но я начинаю чувствовать, что повторяю себя, и насколько я узнал DRY. Так есть ли более разумный способ сделать это?
Я подумал над этим, проблема для меня - это времена, когда несколько условий должны быть истинными (так что, например, найти все с материальным именем и идентификатором в качестве примера) не будет ли это просто создать один огромный метод вместо этого с alot of if's? – Sumsar1812
Запросы могут быть скомпонованы, поэтому вам просто нужно вывести выражение else в моем примере. Поэтому, если указан ID, вы добавляете предложение id where, и если имя материала указано, вы также * добавляете предложение where с именем. Если присутствует только один, вы добавляете только предложение where только для указанных. Запрос не выполняется до тех пор, пока не будет '.ToList()' it, поэтому вы можете добавить столько запросов 'query = query.Where (x => whatever)', которые вы хотите. – KallDrexx
можете ли вы попробовать изменить свой пример, чтобы показать это? – Sumsar1812