Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, Entity Framework
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 25
Записей в блоге: 2
1

Code First с БД PostgreSQL в Visual Studio Code на Linux

09.09.2018, 16:28. Показов 5061. Ответов 6

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Возникла проблема с подключением к БД PostgreSQL, обо всем по порядку:
Стоит система Ubuntu 17.10, работаю в Visual Studio Code (тренируюсь с освоением EntityFramework, Code First), база данных: PosgreSQL.
Создал консольное приложение, подключил все необходимые пакеты (EntityFramework, Npgsql, Npgsql.EntityFramework), рестор осуществил.
Написал необходимые классы:
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
using System;
using System.Collections.Generic;
 
namespace EfDevelopment {
    class Patient {
        public Patient() {
            Visits = new List<Visit>();
        }
 
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime BirthDate { get; set; }
        public AnimalType AnimalType { get; set; }
        public DateTime FirstVisit { get; set; }
        public List<Visit> Visits { get; set; }
    }
 
    class Visit {
        public int Id { get; set; }
        public DateTime Date { get; set; }
        public string ReasonForVisit { get; set; }
        public string Outcome { get; set; }
        public Decimal Weight { get; set; }
        public int PatientId { get; set; } 
    }
 
    class AnimalType {
        public int Id { get; set; }
        public string TypeName { get; set; }
    }
}
и создал Context, в который добавил два DbSet с параметрами-типами соответствующих классов:
C#
1
2
3
4
5
6
7
8
9
10
11
using System;
using System.Data.Entity;
 
 
namespace EfDevelopment {
    class VetContext : DbContext {
        public VetContext() : base(nameOrConnectionString: "Default") { }
        public DbSet<Patient> Patients { get; set; }
        public DbSet<Visit> Visits { get; set; }
    }
}
Ну и прикладываю Program.cs:
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
using System;
using System.Collections.Generic;
 
 
namespace EfDevelopment
{
    class Program
    {
        private static void CreateNewPatient() {
            var dog = new AnimalType {TypeName = "Dog"};
            var patient = new Patient {
                Name = "Sampson",
                BirthDate = new DateTime(2008,1,28),
                AnimalType =  dog,
                Visits = new List<Visit> {
                    new Visit {
                        Date = new DateTime(2011, 9, 1)
                    }
                }
            };
 
            using (var context = new VetContext()) {
                context.Patients.Add(patient);
                context.SaveChanges();
            }
        }
        static void Main(string[] args)
        {
            CreateNewPatient();
            Console.WriteLine("Hello World!");
        }
    }
}
Теперь, как понял, необходимо прописать данные для подключения к БД PostgreSQL в файле App.config, но изначально среди всех файлов проекта он отсутствовал и создание этого файла вручную (с нужным заполнением) не дало никакого результата.
При запуске проекта выдает следующее:

Unhandled Exception: System.TypeInitializationException: The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Configuration.ConfigurationManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.

Хочу понять, что я упускаю и почему App.config отсутствует.
Буду очень благодарен любой подсказке (эта проблема очень тормозит обучение)
0
Лучшие ответы (1)
09.09.2018, 16:28
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2018, 16:28
Ответы с готовыми решениями:

Неуправляемый код (unmanaged code) в управляемом коде (managed code)
Товарищи! Прошу Вашей профессиональной помощи. 1. Что происходит в блоке выделенным красным шрифтом (после static class NativeMethods),...

Visual Studio Code и расширения Linux
Не устанавливаются расширения ни при нажатии на кнопку Install, ни при вводе в консоль(Ctrl + P). Помогите

Чем отличается Visual Studio Community и Visual Studio Code?
в чем разница Visual Studio Code или Visual Studio Community. Описание на англиском где я полный нуль. кто юзал эти IDE и может сказать чем...

6
Эксперт .NET
 Аватар для Usaga
12796 / 8816 / 1314
Регистрация: 21.01.2016
Сообщений: 33,029
10.09.2018, 08:22 2
Donil, это вы с Mono работаете что ли? Строка подключения не обязана быть именно в app.config. Она может где угодно лежать. Вы можете её непосредственно в конструктор DbContext-а передать.
1
50 / 39 / 17
Регистрация: 15.03.2018
Сообщений: 110
10.09.2018, 09:31 3
Лучший ответ Сообщение было отмечено Donil как решение

Решение

Donil,
Ваш контекст подходит, когда есть файл appsettings.json и в нём есть ваша строка подключения. Как его добавить не в asn net core я не знаю, но вы можете указать строку подкючения напрямую, как вот тут https://metanit.com/sharp/enti... re/7.1.php
Только миграцию придется через терминал делать. Я использую вот это руководство на Ubuntu:
https://docs.microsoft.com/ru-... -db-sqlite
1
Эксперт .NET
 Аватар для Usaga
12796 / 8816 / 1314
Регистрация: 21.01.2016
Сообщений: 33,029
10.09.2018, 09:33 4
azariah, ТС использует Entity Framework, а не Entity Framework Core.
0
50 / 39 / 17
Регистрация: 15.03.2018
Сообщений: 110
10.09.2018, 09:39 5
Usaga, спасибо, что поправили Теперь я понял Ваш ответ про моно Зачем только тс тогда использует VS code.
0
Эксперт .NET
 Аватар для Usaga
12796 / 8816 / 1314
Регистрация: 21.01.2016
Сообщений: 33,029
10.09.2018, 09:52 6
Да, мутное что-то делается.
0
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 25
Записей в блоге: 2
10.09.2018, 15:25  [ТС] 7
Да, мутно получилось. Теперь использую Entity Framework Core, вроде работает.
0
10.09.2018, 15:25
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2018, 15:25
Помогаю со студенческими работами здесь

Visual Basic 5 компиляция в P-Code и в Native Code - различия
Из одного и того же исходного кода: скомпилировано два exe-файла один в P-Code - BitBlt32p.exe другой в Native Code -...

Visual studio code
Добрый день. В visual studio есть возможность удаленно собирать и отлаживать программу для linux. На удаленной Linux машине. ...

Visual Studio Code
Подскажите, пожалуйста, как настроить Visual Studio Code для компиляции С++ кода? Блин, это оказывается реально сложно. Хоть бы кто...

Visual Studio Code
Всем добра! товарищи подскажите, как соединить Visual Studio Code и Lua ? Скачал в маркете расширения для луа (на скрине видно какие) ...

Visual Studio Code + С#
Помогите установить Visual Studio Code + С#. Делал по https://docs.microsoft.com/en-us/dotnet/core/tutorials/with-visual-studio-code ...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Использование кэша Laravel - полный гайд
bytestream 18.02.2025
Кэширование - один из наиболее эффективных способов повышения производительности веб-приложений. В современном мире, где скорость загрузки страниц напрямую влияет на удержание пользователей и. . .
Создаем REST API в Laravel с аутентификацией через Passport
bytestream 18.02.2025
Разработка современных веб-приложений все чаще требует создания надежного и хорошо структурированного API. REST API стал стандартом де-факто для построения взаимодействия между клиентской и серверной. . .
Пайплайны в Laravel - полный гайд
bytestream 18.02.2025
Разработка современных веб-приложений часто требует обработки сложных процессов, состоящих из множества последовательных шагов. Например, при создании системы комментариев может потребоваться. . .
Как правильно использовать @required в Symfony
bytestream 18.02.2025
При разработке приложений на Symfony мы часто сталкиваемся с необходимостью внедрения зависимостей. Фреймворк предоставляет несколько способов управления этим процессом, и одним из таких инструментов. . .
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru