Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/64: Рейтинг темы: голосов - 64, средняя оценка - 4.88
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 279

Чтение из существующей таблицы

13.05.2021, 09:52. Показов 12865. Ответов 33
Метки c#, mvc (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет друзья. Вопрос такой, каким образом можно прочитать данные из таблицы уже существующей, и вывести на View?

Что пробовал Я

C#
1
2
3
4
5
<connectionStrings>
 
    <add name="DbTrans" connectionString="Data Source=trnh-application;Initial Catalog=test1;User ID=sa;Password=derParol;" providerName="System.Data.SqlClient" />
 
  </connectionStrings>

Связь с базой
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
 
namespace WebApplication1.Models.Data
{
    public class DbTrans : DbContext
    {
        public DbSet<PageTransDTO> Trans { get; set; }
    }
}
Модель DTO

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
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
 
namespace WebApplication1.Models.Data
{
    //[Table("_Document3294_VT3298")]
    public class PageTransDTO
    {
        [Key]
        public bool KeyField { get; set; }
        public float _Fld3300 { get; set; }
        public string _Fld3301 { get; set; }
        public string _Fld3302 { get; set; }
 
        public int _Fld3304 { get; set; }
        public string _Fld3305 { get; set; }
        public string _Fld3306 { get; set; }
        public string _Fld3307 { get; set; }
        public DateTime _Fld3308 { get; set; }
        public string _Fld3309 { get; set; }
        public int _Fld3310 { get; set; }
        public string _Fld3303 { get; set; }
 
    }
}
Модель ViewModel

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
43
44
45
46
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using WebApplication1.Models.Data;
 
namespace WebApplication1.Models.ViewModels.Pages
{
    public class TransVM
    {
        public TransVM()
        {
        }
 
        public TransVM(PageTransDTO row)
        {
            _KeyField = row.KeyField;
            _Fld3300 = row._Fld3300;
            _Fld3301 = row._Fld3301;
            _Fld3302 = row._Fld3302;
            _Fld3304 = row._Fld3304;
            _Fld3305 = row._Fld3305;
            _Fld3306 = row._Fld3306;
            _Fld3307 = row._Fld3307;
            _Fld3308 = row._Fld3308;
            _Fld3309 = row._Fld3309;
            _Fld3310 = row._Fld3310;
            _Fld3303 = row._Fld3303;
        }
 
        public bool _KeyField { get; set; }
        [Display(Name = "Sidebar")]
        public float _Fld3300 { get; set; }
        public string _Fld3301 { get; set; }
        public string _Fld3302 { get; set; }
        public int _Fld3304 { get; set; }
        public string _Fld3305 { get; set; }
        public string _Fld3306 { get; set; }
        public string _Fld3307 { get; set; }
        public DateTime _Fld3308 { get; set; }
        public string _Fld3309 { get; set; }
        public int _Fld3310 { get; set; }
        public string _Fld3303 { get; set; }
    }
}
TransController
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models.Data;
using WebApplication1.Models.ViewModels.Pages;
 
namespace Trans.Controllers
{
    public class TransController : Controller
    {
        // GET: Trans
        public ActionResult Index()
        {
            //Объявляем список для представления(TransVM)
            List<TransVM> transList;
 
            //Инициализируем список (Db)
            using (DbTrans db = new DbTrans())
            {
                transList = db.Trans.ToArray().Select(x => new TransVM(x)).ToList(); //Ошибка тут
            }
            //Возвращаем список в представление
            return View(transList);
        }
    }
}
View
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
@model IEnumerable<WebApplication1.Models.ViewModels.Pages.TransVM>
 
@{
    ViewBag.Title = "Index";
}
 
<h2>Index</h2>
 
<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model._KeyField)
        </th>
        <th>
            @Html.DisplayNameFor(model => model._Fld3300)
        </th>
        <th>
            @Html.DisplayNameFor(model => model._Fld3301)
        </th>
        <th>
            @Html.DisplayNameFor(model => model._Fld3302)
        </th>
        <th>
            @Html.DisplayNameFor(model => model._Fld3304)
        </th>
        <th>
            @Html.DisplayNameFor(model => model._Fld3305)
        </th>
        <th>
            @Html.DisplayNameFor(model => model._Fld3306)
        </th>
        <th>
            @Html.DisplayNameFor(model => model._Fld3307)
        </th>
        <th>
            @Html.DisplayNameFor(model => model._Fld3308)
        </th>
        <th>
            @Html.DisplayNameFor(model => model._Fld3309)
        </th>
        <th>
            @Html.DisplayNameFor(model => model._Fld3310)
        </th>
        <th>
            @Html.DisplayNameFor(model => model._Fld3303)
        </th>
        <th></th>
    </tr>
 
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item._KeyField)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item._Fld3300)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item._Fld3301)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item._Fld3302)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item._Fld3304)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item._Fld3305)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item._Fld3306)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item._Fld3307)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item._Fld3308)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item._Fld3309)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item._Fld3310)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item._Fld3303)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
    </tr>
}
 
</table>

Ошибка в контролере
C#
1
System.Data.DataException: "An exception occurred while initializing the database. See the InnerException for details."
Добавлено через 30 секунд
вся бд уже создана и заполненна, с нее нужно только тянуть данные

Добавлено через 17 минут
Ошибка
C#
1
System.InvalidOperationException: "The model backing the 'DbTrans' context has changed since the database was created. Consider using Code First Migrations to update the database
Добавлено через 59 минут
Доработал Global.asax
Ошибка пропала. Но данные все ровно не выводит

Добавлено через 9 минут
Так, Global.asax менять не нужно. Потому что после этого создалась миграция на основании моей таблицы. А это не нужно. Вопрос все еще открыт
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2021, 09:52
Ответы с готовыми решениями:

Создание temp таблицы из существующей
Добрый день. Требуется создать TEMP таблицу и перелить данные из существующей. (для изменения в существующей таблице столбца...

Автозаполнения на основе существующей таблицы
Здравствуйте. нужно осуществить автозаполнения новой таблицы на основе существующей таблицы.

SQLite: проверка таблицы в существующей БД
как можно проверить есть ли в БД таблица с определенным именем, или получит список имеющихся таблиц

33
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 279
14.05.2021, 09:53  [ТС]
Студворк — интернет-сервис помощи студентам
Почтальон, это для теста было. Там не весь код. Тут внимания не обращайте лучше
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
14.05.2021, 10:02
Цитата Сообщение от carrotik Посмотреть сообщение
на самом деле есть много ситуаций, когда для третих сторон нужен рид-онли доступ к данным 1С, но допускать шаловливые ручки к клиенту 1С (толстому, тонкому, вебовскому) вовсе не хочется, а точнее - есть такое задание партии ..
Так это еще проще делается через API, 1С в это умеет
0
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 279
14.05.2021, 10:04  [ТС]
Почтальон
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
14.05.2021, 10:07
yyyuuu, у меня нет вашей базы. Настроить подключение можно через конструктор. Имя подключения должно быть таким же как у класса, реализующего DbContext
0
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 279
14.05.2021, 10:13  [ТС]
Еще вот такая ошибка теперь появилась
Миниатюры
Чтение из существующей таблицы  
0
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 279
14.05.2021, 10:14  [ТС]
Почтальон, подключение как по учебнику
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using Trans.Models.Data;
 
namespace WebApplication1.Models.Data
{
    public class DbTrans : DbContext
    {
        public DbSet<PageTransDTO> Trans { get; set; }
        public DbSet<Document> Doc { get; set; }
    }
}

C#
1
2
3
4
5
<connectionStrings>
 
    <add name="DbTrans" connectionString="Data Source=apl;Initial Catalog=ВВВ;MultipleActiveResultSets=True;User ID=sa;Password=DerParol;" providerName="System.Data.SqlClient" />
 
  </connectionStrings>
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
14.05.2021, 10:20
Цитата Сообщение от yyyuuu Посмотреть сообщение
ошибка
скорее всего типы не совпадают (byte / bool)

Добавлено через 5 минут
yyyuuu, вы сами запутались со своими DTO....
Цитата Сообщение от yyyuuu Посмотреть сообщение
подключение как по учебнику
Это хорошо, значит код должен работать:
C#
1
2
3
DbTrans db = new DbTrans();
List<PageTransDTO> transList = db.Trans.ToList();
return View(transList);
И в представление вы дожны передавать тип IEnumerable<PageTransDTO>
0
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 279
14.05.2021, 10:42  [ТС]
Цитата Сообщение от Почтальон Посмотреть сообщение
скорее всего типы не совпадают (byte / bool)
в sql byte в c# bool разве нет?

Добавлено через 7 минут
Цитата Сообщение от Почтальон Посмотреть сообщение
И в представление вы дожны передавать тип IEnumerable<PageTransDTO>
до представление пока не доходит

Добавлено через 4 минуты
Цитата Сообщение от Почтальон Посмотреть сообщение
List<PageTransDTO> transList = db.Trans.ToList();
C#
1
-       $exception  {"The specified cast from a materialized 'System.Byte[]' type to the 'System.Boolean' type is not valid."}  System.InvalidOperationException
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
14.05.2021, 10:46
yyyuuu, читайте текст ошибки, я уже говорил про приведение типов.

Добавлено через 35 секунд
Цитата Сообщение от yyyuuu Посмотреть сообщение
в sql byte в c# bool разве нет?
Не различаете byte и bool ?
0
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 279
14.05.2021, 10:55  [ТС]
Цитата Сообщение от Почтальон Посмотреть сообщение
Не различаете byte и bool ?
А, точно. Не знаю почему Я подумал что они одинаковые
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
14.05.2021, 12:39
Стесняюсь сказать, с 1С давно работал, могу ошибаться.
Лезть в физические таблицы 1С - это жуть голубая - там ведь объектная СУБД.
Но 1С - это COM-сервер и можно общаться с ним на уровне объектов, извлекая и добавляя данные объектами.
По крайней мере, в свое время мы именно так залезали на 1С-склад за остатками и писали туда данные о движении с лимитно-заборных карт.

Добавлено через 5 минут
Что касается сабжа.
Тут все "смешалось в доме Облонских" - и 1С, и пляски с моделями, якобы повышающие защиту информации (каким образом - для меня загадка, ведь клиент-браузер понятия не имеет ни о каких "моделях" и общается с сервером текстовыми данными или двоичными,при этом в какие "модели" они завернуты на сервере, он не представляет от слова совсем), и миграции, и Code First.. В общем, как мне представляется, лучшее решение: весь проект - "в печку" и писать все по-нормальному заново.
Ну и про Code First с миграциями забыть. По крайней мере, до наступления хоть какого-то просветления в голове
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
14.05.2021, 13:07
Цитата Сообщение от MsGuns Посмотреть сообщение
Лезть в физические таблицы 1С - это жуть голубая - там ведь объектная СУБД.
Полностью согласен, поэтому и упомянул разработку клиента на 1С, но технология COM слишком древняя и тормознутая на всю голову.
Цитата Сообщение от MsGuns Посмотреть сообщение
В общем, как мне представляется, лучшее решение: весь проект - "в печку" и писать все по-нормальному заново.
Это было бы наименьшим злом
Я поступил бы следующим образом. Поднял на стороне 1С нужный API-функционал. Написал клиента на c# который юзает этот API. Всё, лапки на стол.
0
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 279
15.05.2021, 16:46  [ТС]
MsGuns, Да Я знаю что такое CF. В том то и дело, что он Мне не нужен в данном проекте. Я не собираюсь создавать базу данных. Я хочу ее читать

Добавлено через 58 секунд
Цитата Сообщение от Почтальон Посмотреть сообщение
Полностью согласен, поэтому и упомянул разработку клиента на 1С, но технология COM слишком древняя и тормознутая на всю голову.
Ком не подходит, не в 2021 хотябы
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
15.05.2021, 16:59
Цитата Сообщение от yyyuuu Посмотреть сообщение
Я хочу ее читать
Ну и читайте на здоровье ! В классы Модели, которые отображают сущности читаемых таблиц или запросов. Зачем это нагромождение классов-прослоек ?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.05.2021, 16:59
Помогаю со студенческими работами здесь

Создание скрипта для существующей таблицы
Hei, У меня вопрос. У меня есть задача сделать sql скрипт, есть некоторые требования: - добавление поля в таблицу как char (1) ...

Формирование таблицы новой структуры из существующей
Добрые день уважаемые!!! Обращаюсь к Вам с помощью. Есть файлик &quot;Таблица&quot;, в котором в первом листе находится таблица с данными. Во...

Как добавить поле из существующей таблицы
в общем есть таблица. хочу добавить туда поле со значениями из существующей другой таблицы. в гугле описывается такой способ: На вкладке...

Создание новой таблицы из полей существующей
Собственно, вопрос полностью изложен в заголковке, как используя myadmin создать новую талицу из существующей, куда войдут только...

Добавление записей в поля существующей таблицы
Здравствуйте! Прошу подсказать решение такой задачи с помощью VBA. Есть таблица: id(счетчик), номер наряда, ФИО, дата, сумма ...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru