Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Betankor
9 / 9 / 3
Регистрация: 23.02.2013
Сообщений: 51
1

Создание Entity Data Model на основе базы данных

23.03.2013, 13:32. Просмотров 1872. Ответов 3
Метки нет (Все метки)

Здравствуйте. Есть база данных, назовем ее ExCon. В ней две таблицы: BetonChar и ArmChar. Обе таблицы заполнены.
Насколько я знаю, для того, чтобы простым способом реализовать получение данных из таблиц базы данных, можно воспользоваться автоматической генерацией EntityDataModel.

То есть создаем элемент типа ADO.NET Entity Data Model из списка, в окне для создания. Называем его к примеру CharModel.cs. Далее выбираем что создается он из существующей базы данных, а затем просто отмечаем нужные таблички и нажимаем "Готово".

После этого в каталоге Model приложения генерируется класс CharModel.emdx, в котором есть файл CharModel.Designer.cs, в котором должны быть сгенерированы автоматические свойства, чтобы мы могли создать объект доступа (в данном случае ExConEntities) и могли получить значения свойств (полей таблиц нашей БД).

Но, почему-то при создании EDM файл CharModel.Designer.cs совершенно пуст((( соответственно, свойства мы получить не можем.
Делал все как тут: http://www.techdays.ru/videos/3309.html начиная с 19:20
Подскажите пожалуйста, если кто знает, в чем проблема. Буду очень признателен.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 13:32
Ответы с готовыми решениями:

Проблема с Entity Data Model, не добавляются таблицы
Проблема вот в чет не сейчас в Entity Data Model есть 3 таблицы и больше я добавить не могу не...

Dataset или Entity Data Model?
Здравствуйте! Подскажите чем отличаются Dataset от Entity Data Model? И в каких случаях что лучше...

Оптимизация ado net entity data model
Пишу админ часть на ASP MVC 3 c entity framework. Объект entity framework создается один раз в...

Появилась ли Entity Data Model для MS Access
Уважаемые Гуру! Может кто-то знает появилась ли возможность создать Entity data model for ms...

Entity Data Model - не все файлы генерируются
Добрый день, вновь прошу помощи у Гуро..! Проблемка следующая: благополучно разбатывал...

3
Betankor
9 / 9 / 3
Регистрация: 23.02.2013
Сообщений: 51
24.03.2013, 17:55  [ТС] 2
Отчасти проблему решил, написал все вручную. Но возник другой вопрос. В целом наверное достаточно простой, но я что-то торможу. Но, обо всем по порядку. Суть проста. Мы в форме указываем класс бетона, а нам из базы данных выводятся характеристики.
Форма для запроса (код класса не привожу, так как в нем только одно свойство для класса бетона):
HTML5
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
<div>
    @using (Html.BeginForm())
    { 
            <div class="sourceDataMat">Класс бетона:</div>
            <p>@Html.DropDownListFor(x => x.BClass, new[] {
                       new SelectListItem() {Text = "B7.5", Value = "B7.5", Selected = true},
                       new SelectListItem() {Text = "B10", Value = "B10"},
                       new SelectListItem() {Text = "B12.5", Value = "B12.5"},
                       new SelectListItem() {Text = "B15", Value = "B15"},
                       new SelectListItem() {Text = "B20", Value = "B20"},
                       new SelectListItem() {Text = "B22.5", Value = "B22.5"},
                       new SelectListItem() {Text = "B25", Value = "B25"},
                       new SelectListItem() {Text = "B27.5", Value = "B27.5"},
                       new SelectListItem() {Text = "B30", Value = "B30"},
                       new SelectListItem() {Text = "B35", Value = "B35"},
                       new SelectListItem() {Text = "B40", Value = "B40"},
                       new SelectListItem() {Text = "B45", Value = "B45"},
                       new SelectListItem() {Text = "B50", Value = "B50"},
                       new SelectListItem() {Text = "B55", Value = "B55"},
                       new SelectListItem() {Text = "B60", Value = "B60"},
                       new SelectListItem() {Text = "B65", Value = "B65"},
                       new SelectListItem() {Text = "B70", Value = "B70"},
                       new SelectListItem() {Text = "B75", Value = "B75"},
                       new SelectListItem() {Text = "B80", Value = "B80"}
            })</p>
            <input type="submit" value="Подобрать" />
    }
</div>
Класс HBetonChar с необходимыми свойствами:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
 
namespace ExCon.Models
{
    public class HBetonChar
    {
        public virtual int id { get; set; }
        public virtual string BetonClass { get; set; }
        public virtual float RbnRbser { get; set; }
        public virtual float RbtnRbtser { get; set; }
        public virtual float Rb { get; set; }
    }
}
Класс, производный от DbContext для соединения с базой:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
 
namespace ExCon.Models
{
    public class ExConContext : DbContext
    {
        public ExConContext()
            : base("ExConstruction")
        { }
 
        public DbSet<HBetonChar> BetonChar { get; set; }
    }
}
Контроллер:
C#
1
2
3
4
5
6
7
8
[HttpPost]
        public ViewResult KJ(Arming arming)
        {
            ViewBag.BClass = arming.BClass; // именно класс Arming я не приводил в начале, так как в нем одно свойство
            ExConContext exdb = new ExConContext();
            ViewBag.Beton = exdb.BetonChar.ToList();
            return View("SourceData"); // сюда особо внимание не обращайте, часть кода удалил, чтобы только основное оставить.
        }
Ну и представление SourceData:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<div style="margin-top: 10px;">
    <h3>Материалы</h3>
    <div>Класс бетона: @ViewBag.BClass</div>
    <br />
    @foreach (var p in ViewBag.Beton)
    {
        if (p.BetonClass == @ViewBag.BClass)
        { 
        <div>Сопротивления R<sub>bn</sub>, R<sub>bser</sub>: @p.RbnRbser</div>
        <div>Сопротивления R<sub>btn</sub>, R<sub>btser</sub>: @p.RbtnRbtser</div>
        <div>Сопротивление R<sub>b</sub>: @p.Rb</div>
        }
    }
</div>
Насколько я понимаю, сейчас я сделал по-тупому. То есть вначале все из базы выбрал строкой "ViewBag.Beton = exdb.BetonChar.ToList();" а затем уже начал обрабатывать коллекцию. Наверняка ведь есть какой-то способ, благодаря которому можно переданный arming.BClass использовать для выборки необходимой строки из базы?
Подскажите пожалуйста, кто знает. Спасибо.
0
obrazer
71 / 71 / 3
Регистрация: 04.09.2012
Сообщений: 170
25.03.2013, 13:34 3
Цитата Сообщение от Betankor Посмотреть сообщение
Наверняка ведь есть какой-то способ, благодаря которому можно переданный arming.BClass использовать для выборки необходимой строки из базы?
LINQ
C#
1
ViewBag.Beton = exdb.BetonChar.Where(x => x.BetonClass == arming.BClass).ToList();
1
Betankor
9 / 9 / 3
Регистрация: 23.02.2013
Сообщений: 51
25.03.2013, 18:15  [ТС] 4
Спасибо большое)) Почитал, буду использовать.
0
25.03.2013, 18:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2013, 18:15

Восстановление элемента ADO.NET Entity Data Model
Всем доброго время суток. Я переустановил Visual Studio 2010 после этого у меня возникла проблема....

Найти пункт ADO.NET Entity Data Model
Доброго времени суток, Господа. Возникла проблемка с VS 2017. В проекте, когда нажимаю правой...

Entity Data Model (Как создать базу из схемы?)
Нужно создать базу данных имея модель edmx. Единственное что получилось сделать - создать edmx.sql...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru