.Net Web API с базой данных PostGreSQL (Npgsql) [дубликат]

Как установить версию python на 2.7, если вы установили Anaconda3 (Python 3.6) в MacOS High Sierra 10.13.5

Отредактируйте файл .bash_profile в вашем домашнем каталоге.

vi $ HOME / .bash_profile

hash out the line # export PATH = "/ Users / YOURUSERNAME / anaconda3 / bin: $ PATH"

Закройте оболочку снова, вы должны см. 2.7 при запуске python.

Тогда, если вы хотите 3.6, вы можете просто раскомментировать свою строку anaconda3 в своем профиле bash.

Попытка отсоединить python закончится слезами в Mac OSX.

Вы будете что-то вроде этого

unlink: / usr / bin / python: операция не разрешена

Надеюсь, что кто-то поможет !! :):)

28
задан nograde 28 October 2011 в 05:29
поделиться

6 ответов

Итак, я отказался от попыток сделать это так, как я чувствовал, что это нужно сделать и удалить плюрализацию все вместе. Я действительно не знаю наверняка, но я предполагаю, что проблема связана с поддержкой соединителя mysql .net EF. Вот что я сделал.

Во-первых, в моем методе ApplicationStart произошла ошибка:

//WRONG
//Database.SetInitializer(new DropCreateDatabaseAlways<myDB>());
Database.SetInitializer(new myDBInitializer());

Во-вторых, я перестал использовать базовую реализацию OnModelCreating, которая не указана в оригинале код, так как я только реализовал его в соответствии с предложением jgauffin:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //DONT DO THIS ANYMORE
    //base.OnModelCreating(modelBuilder);
    //modelBuilder.Entity<Vote>().ToTable("Votes")
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

В-третьих, я прочитал в некоторых сообщениях, что MySQL .net Connector не позволяет EF фактически создавать CREATE базу данных, поэтому я изначально создал пустой БД. Это, похоже, больше не относится к разъему 6.4.4+, и пока пользователь вашей строки подключения может создавать новые базы данных, он работает лучше, если изначально не существует.

Я все это сделал, он работал. Поэтому теперь я могу хотя бы двигаться вперед. Надеюсь, мы сможем выяснить причину множественного / сингулярного несоответствия в будущем.

Спасибо всем за их время и усилия.

42
ответ дан nograde 18 August 2018 в 19:50
поделиться
  • 1
    Спасибо, это помогло мне. Если кто-то получает следующую ошибку: Can't create table 'yourdb.#sql-440_4fa8' (errno: 150), это означает, что вы забыли удалить TableAttribute на одной из ваших моделей (ошибка 150 связана с внешним ключом). – Marthijn 20 December 2011 в 11:43

Откройте класс DbContext, связанный с таблицами, которые вы хотите сохранить имя уникальной таблицы.

Если вы используете EF 6, добавьте ссылку на:

using System.Data.Entity.ModelConfiguration.Conventions;

Если это более старая версия, добавьте ссылку на:

using System.Data.Entity.ModelConfiguration.Conventions.Edm.Db;

Наконец, создайте метод, который переопределяет OnModelCreating и удаляет соглашение для множественного имени таблиц:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
7
ответ дан Bartho Bernsmann 18 August 2018 в 19:50
поделиться

Удалите флажок «Плюрализировать или сгенерировать сгенерированные объекты», когда вы создаете объект объекта.

enter image description here [/g0]

8
ответ дан Dan 18 August 2018 в 19:50
поделиться
  • 1
    Привет, Дэн, спасибо за ответ. это буквально мой первый проект MVC / EF и im, используя подход, основанный на кодах. Я не совсем уверен, как получить доступ к меню, в котором вы сделали снимок экрана. Можете ли вы просветить меня? благодаря! – nograde 28 October 2011 в 04:30
  • 2
    Вы не можете с кодом сначала. – jgauffin 28 October 2011 в 04:59
  • 3
    Этот метод работает, если вы добавляете новый объект объекта и указываете его на существующую схему базы данных. – Dan 28 October 2011 в 05:24
3
ответ дан jgauffin 18 August 2018 в 19:50
поделиться

Если вы используете Code First с EF 6.1 +, переопределите обработчик события OnModelCreating и выполните следующие вызовы:

dmbCloud.Conventions.Remove<PluralizingEntitySetNameConvention>();
dmbCloud.Conventions.Remove<PluralizingTableNameConvention>();
2
ответ дан Kram 18 August 2018 в 19:50
поделиться

В вашем классе контекста myDB переопределите следующий метод

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    base.OnModelCreating(modelBuilder);
}

, чтобы он не дублировал имена сгенерированных таблиц.

18
ответ дан Morten Mertner 18 August 2018 в 19:50
поделиться
  • 1
    О, вы действительно хотите имена таблиц множественного числа. Вышеупомянутое вряд ли поможет в этом случае. Описанное поведение звучит как ошибка в провайдере MySQL EF. – Morten Mertner 28 October 2011 в 09:02
  • 2
    Я думаю, ты прав Мортен. – nograde 28 October 2011 в 12:30
  • 3
    Вот длиннее объяснение сообщения Мортен. [Д0] edspencer.me.uk/2012/03/13/… – Sameer 17 October 2014 в 18:59
Другие вопросы по тегам:

Похожие вопросы: