0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 4
1

asp.net mvc entity framework условия

28.02.2013, 11:21. Показов 1709. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такой вопрос
На C# я использовал класс
C#
1
2
3
           
 SQLiteConnection myConnection = new SQLiteConnection(Connect);
          myConnection.Open();
Строка запроса строилась из условий выбора
C#
1
2
3
4
5
6
7
8
 if (chk0.Checked) { param1 = " AND fire = 0 "; }
else if (chk1.Checked) { param1 = " AND fire = 1 "; }
else {param1 = " "}
 
 if (chk3.Checked) { param2 = " AND str = 0 "; }
else if (chk4.Checked) { param2 = " AND str = 1 "; }
else {param2 = " "}
Connect = "SELECT * FROM item WHERE " + param1 + param2 ;
Как видно запрос в частности WHERE строиться по результатам if

Вопрос? Как достичь такого же результата применяя entity framework

На данный момент я создаю в каждом условии if
отдельный запрос что очень неудобно посколу параметров довольно много.
C#
1
2
3
4
5
6
7
8
9
10
11
12
                if (vulnerability != -100 && raite == "-100")
                {
                    return from Name in northwind.name
                           where class_tip_list.Contains(Grp.class)  
                           select new { тут выборка };
                }
                else
                {
                    return from Name in northwind.name
                           where Grp.level >= slider_min
                           select new { тут выборка };
                }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2013, 11:21
Ответы с готовыми решениями:

MembershipProvider для ASP.NET MVC 3 + Entity Framework ?
Снова здравствуйте!:) Есть интернет-магазин, под него создана БД, которая хранит всю информацию...

Связь 1 к многим в приложении Entity Framework ASP.NET MVC 5
Пишу веб-приложения и нужно сделать связь 1 к многим, но это поле может быть не заполнение. И тут и...

Оптимизация ASP.NET MVC + Entity Fraemwok
Есть вьюшка, в модель которой получаю все разделы форума. Далее прохожу по всем разделам и вывожу...

ASP.NET MVC 4,ASP.NET MVC 4.5 и ASP.NET MVC 5 большая ли разница между ними?
Начал во всю осваивать технологию,теперь хочу с книжкой посидеть и вдумчиво перебрать всё то что...

3
13 / 13 / 2
Регистрация: 13.02.2013
Сообщений: 45
28.02.2013, 15:29 2
При работе с EF я создавала отдельные классы, которые работали с объектами созданными в EF.
Например в БД есть таблица item, EF создал класс items, где описаны поля таблицы как свойства и несколько стандартных методов для работы с этой таблицей. Так вот, в дополнительном классе, например itemWork, я создаю объект модели и пишу методы для работы с данной таблицей. Т.о. ты можешь отдельно написать метод, который содержит твой запрос. В Контроллере приложения обрабатываешь все данные, создаешь объект класса itemWork и передаешь данные в метод с нужным запросом.
Если тебе это подходит, то вот ссылка на видео уроки, в которых все очень понятно показано:
http://www.techdays.ru/videos/3695.html
0
73 / 73 / 3
Регистрация: 04.09.2012
Сообщений: 170
28.02.2013, 16:35 3
C#
1
2
3
4
5
6
7
8
var q = context.Items.AsQueryable();
 if (chk0.Checked) { q = q.Where(o =>  o.fire = 0); }
else if (chk1.Checked) { q = q.Where(o =>  o.fire = 1);; }
 
 if (chk3.Checked) { q = q.Where(o =>  o.str = 0); }
else if (chk4.Checked) { q = q.Where(o =>  o.str = 1); }
 
var l = q.ToList();
context - Entity-контекст, Items - ObjectSet (нужная табличка)
Сперва приводишь к IQueryable, это еще не список данные, а запрос. Потом последовательно можно добавлеять к запросу условия посредством Where() (т.е. запись q = q.Where(o => o.fire = 0); q = q.Where(o => o.str = 0); будет равносильна q = q.Where(o => o.fire = 0 && o.str = 0)
Ну в конце ToList() выполняет запрос и представляет результаты в виде списка
1
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 4
01.03.2013, 16:06  [ТС] 4
Сам виноват не описал полностью проблему потому пришлось решать самому
Всё хорошо работает, если у вас отсутствуют анонимные типы связанных таблиц JOIN
C#
1
2
3
4
5
6
7
8
9
10
ObjectContext northwind2 = new ObjectContext("name=4lUtkeEntities");
northwind2.DefaultContainerName = "4lUtkeEntities";
 
string esqlQuery = "SELECT Grp._id, Grp._level, Name._name_en as _name, Name._title_en as _title FROM high_five_4lUtkeEntities._name as Name" +
                    " LEFT JOIN 4lUtkeEntities._grp as Grp ON Grp._id = Name._id" +
                    " LEFT JOIN 4lUtkeEntities._skilss as Skil ON Skil._id = Name._id" +
                    " WHERE Name._id =  319";
ObjectQuery<DbDataRecord> onlineOrders = new ObjectQuery<DbDataRecord>(esqlQuery, northwind2);
var tt = onlineOrders.ToList().ConvertTo<NmGpSk>().AsQueryable();
return tt;
northwind2 = edmx модель
Теперь я могу извращаться над запросом как угодно,

Чтобы всё это работала необходим класс конвертер
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 public static class AnonymousTypeConversion
{
 /// <summary>
 /// Converts a single DbDataRwcord object into something else.
 /// The destination type must have a default constructor.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="record"></param>
 /// <returns></returns>
 public static T ConvertTo<T>(this DbDataRecord record)
 {
  T item = Activator.CreateInstance<T>();
  for (int f = 0; f < record.FieldCount; f++)
  {
   PropertyInfo p = item.GetType().GetProperty(record.GetName(f));
   if (p != null && p.PropertyType == record.GetFieldType(f))
   {
    p.SetValue(item, record.GetValue(f), null);
   }
  }
 
  return item;
 }
 
 /// <summary>
 /// Converts a list of DbDataRecord to a list of something else.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="list"></param>
 /// <returns></returns>
 public static List<T> ConvertTo<T>(this List<DbDataRecord> list)
 {
  List<T> result = (List<T>)Activator.CreateInstance<List<T>>();
 
  list.ForEach(rec =>
  {
   result.Add(rec.ConvertTo<T>());
  });
 
  return result;
 }
}
Подробнее тут

Также необходимо добавить Модель, возвращаемых запросом, анонимных типов, в моём случае
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace Informer.Models
{
    using System;
    using System.Collections.Generic;
 
    public partial class NmGpSk
    {
        public int _id { get; set; }
        public int _level { get; set; }
        public string _name { get; set; }
        public string _title { get; set; }
    }
}
Не забываем что имена и порядок возвращаемых типов должны быть равны созданной вами модели.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2013, 16:06
Помогаю со студенческими работами здесь

Вывод информации из БД с использованием Entity на ASP.NET MVC 4
Добрый день тыжпрограммисты, прошу вашей помощи) Постараюсь объяснить по пунктам. Создана база...

Стоит ли изучать asp.net mvc 4 из за скорого выхода asn.net mvc vNext ?
Доброго вечера! Как я узнал, Microsoft скоро планирует выпустить новый веб-фреймворк с названием...

MVC + Entity Framework
Подскажите плз ORM, а возможно и СУБД для более комфортной работы. Планируется написание проекта...

Как переделать проект ASP.NET WebForms в ASP.NET MVC 5
Есть маленький проектик, который я выращиваю. Началось всё с ASP.NET 4 WebForms (.Net Framework...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru