Entity Framework Core 2.2.3 не создает таблицу с использованием подхода «сначала код» по сравнению с 2017 годом - PullRequest
0 голосов
/ 12 марта 2019

HI Я пытаюсь выучить EntityFramework Core из следующих уроков http://www.entityframeworktutorial.net/code-first/what-is-code-first.aspx

Пока я создал

  • Доменный класс
  • DbContextImpl Class
  • Класс исполнения

По какой-то причине я не могу сгенерировать таблицу базы данных, используя код в первую очередь Framework:

  • .Net Core 2.2
  • EF Core 2.2.3 [отредактировано]
  • SQL Server v17.9.1

Мой код выглядит следующим образом:

using Microsoft.EntityFrameworkCore;

namespace EntityFrameworkTuts.repo
{
    public class TwitterDbContext: DbContext
    {
        public DbSet<User> Users { get; set; }

        public DbSet<Tweet> Tweet { get; set; }

        public TwitterDbContext() : base()
        {
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer(@"Data Source=sys-win;Initial Catalog=milton;Persist Security Info=True;User ID=sa;Password=password");
        }


    }
}

namespace EntityFrameworkTuts
{
    public class User
    {
        public long Id { get; set; }
        public string Name { get; set; }
        public ICollection<Tweet> Tweets { get; set; }
    }
}

namespace EntityFrameworkTuts
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            using (var context = new TwitterDbContext())
            {
                User user = new User
                {
                    Name = "John Doe",
                };

                context.Users.Add(user);
                var result = context.SaveChanges();
                Console.WriteLine($"save user ${user.Name} with id ${result}");
            }
        }
    }
}

Я получаю исключение ниже:

Unhandled Exception: Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Invalid object name 'Users'.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues)
   at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)

Я провел небольшое исследование, и похоже, что фреймворк не может найти таблицы пользователей.

Должен ли EFCore 2.2.3 автоматически создавать его? Пожалуйста, дайте мне знать, какую глупую ошибку я могу совершить.

РЕДАКТИРОВАНИЕ: Спасибо, Марк, за устранение сомнения в версии.

1 Ответ

0 голосов
/ 12 марта 2019

Благодаря @ er-sho, мне удалось сгенерировать базу данных, используя код вначале. Мне помогли следующие вещи:

Перейдите в Инструменты => Диспетчер пакетов Nuget => Консоль диспетчера пакетов.

Для создания кода миграции БД

dotnet ef migrations add CreateDatabase --output-dir Data/Migrations

Выполнить код миграции:

dotnet ef database update

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...