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

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Возникла проблема с подключением к БД 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.ConfigurationManag er, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.

Хочу понять, что я упускаю и почему App.config отсутствует.
Буду очень благодарен любой подсказке (эта проблема очень тормозит обучение)
0
Лучшие ответы (1)
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
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,981
10.09.2018, 08:22
Donil, это вы с Mono работаете что ли? Строка подключения не обязана быть именно в app.config. Она может где угодно лежать. Вы можете её непосредственно в конструктор DbContext-а передать.
1
50 / 39 / 17
Регистрация: 15.03.2018
Сообщений: 110
10.09.2018, 09:31
Лучший ответ Сообщение было отмечено 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
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,981
10.09.2018, 09:33
azariah, ТС использует Entity Framework, а не Entity Framework Core.
0
50 / 39 / 17
Регистрация: 15.03.2018
Сообщений: 110
10.09.2018, 09:39
Usaga, спасибо, что поправили Теперь я понял Ваш ответ про моно Зачем только тс тогда использует VS code.
0
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,981
10.09.2018, 09:52
Да, мутное что-то делается.
0
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 25
Записей в блоге: 2
10.09.2018, 15:25  [ТС]
Да, мутно получилось. Теперь использую Entity Framework Core, вроде работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru