Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 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. Показов 4939. Ответов 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2018, 16:28
Ответы с готовыми решениями:

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

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

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

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

6
Эксперт .NET
12309 / 8682 / 1310
Регистрация: 21.01.2016
Сообщений: 32,612
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
12309 / 8682 / 1310
Регистрация: 21.01.2016
Сообщений: 32,612
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
12309 / 8682 / 1310
Регистрация: 21.01.2016
Сообщений: 32,612
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2018, 15:25
Помогаю со студенческими работами здесь

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

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

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

Visual Studio Code + С#
Помогите установить Visual Studio Code + С#. Делал по...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru