«Невозможно привести объект типа« ConcreteTypeMapping »к типу« Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping »WebApi на макросах - PullRequest
0 голосов
/ 06 июня 2018

I, следовал инструкции по созданию WebAPI в Mac OS с использованием Visual Studio.

https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api-mac?view=aspnetcore-2.1 https://github.com/aspnet/Docs/blob/master/aspnetcore/tutorials/first-web-api-mac.md

Startup.cs

public void ConfigureServices(IServiceCollection services)
        {
            services.AddTransient<IAdminUOW, AdminUOW>();
            services.AddTransient(typeof(IGenericRepository<>), typeof(GenericRepository<>));
            services.AddDbContext<MeroRentalContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
                sqlServerOption => sqlServerOption.MigrationsAssembly("Database"))
);
            services.AddMvc();
        }

MeroRentalContext.cs

Файл базы данных контекста cs

public class MeroRentalContext : DbContext
    {
        public MeroRentalContext(DbContextOptions<MeroRentalContext> options)
            : base(options)
        { }
        public DbSet<AdminUser> TodoItems { get; set; }
    }

Файл AdminUser.cs

public class AdminUser
    {
        public Guid UserId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
        public DateTime CreatedTimeStamp { get; set; }
        public DateTime? ModifiedTimeStamp { get; set; }
        public DateTime? LogDate { get; set; }
        public short? LogNumber { get; set; }
        public bool ReloadActiveFlag { get; set; }
        public bool isActive { get; set; }
        public string ExtraText { get; set; }
        public string ResetPasswordToken { get; set; }
        public DateTime? ResetPasswordTokenCreatedTimeStamp { get; set; }
    }

Универсальный класс для данных базы данных класса

public class GenericRepository<T> : IGenericRepository<T> where T : class
    {
        private readonly MeroRentalContext _entities;
        public GenericRepository(MeroRentalContext dbContext)
        {
            _entities = dbContext;
        }

        public virtual IQueryable<T> GetAll()
        {

            IQueryable<T> query = _entities.Set<T>();
            return query;
        }

        public IQueryable<T> FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
        {

            IQueryable<T> query = _entities.Set<T>().Where(predicate);
            return query;
        }
    }

Таблица в базе данных

CREATE TABLE dbo.AdminUser (
    UserId uniqueidentifier NOT NULL,
    FirstName varchar(max) NOT NULL,
    LastName varchar(max) NOT NULL,
    Email varchar(max) NOT NULL,
    UserName varchar(max) NOT NULL,
    Password varchar(max) NOT NULL,
    CreatedTimeStamp datetime NOT NULL DEFAULT (getdate()),
    ModifiedTimeStamp datetime NULL,
    LogDate datetime NULL,
    LogNumber smallint NULL,
    ReloadActiveFlag bit NOT NULL DEFAULT ((0)),
    isActive bit NOT NULL DEFAULT ((1)),
    ExtraText varchar(max) NULL,
    ResetPasswordToken varchar(max) NULL,
    ResetPasswordTokenCreatedTimeStamp datetime NULL
);

ALTER TABLE dbo.AdminUser ADD CONSTRAINT PK__AdminUse__1788CC4C305F59E9 PRIMARY KEY (UserId);

Так как при отладке выдается ошибка как

Невозможно привести объекттипа 'ConcreteTypeMapping' для ввода 'Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping

Подробнее о снимке экрана details of error

Выполнено некоторое исследование, но не удалось найтирешение https://github.com/aspnet/EntityFrameworkCore/issues/8369 https://github.com/aspnet/EntityFrameworkCore/issues/11704 https://www.ctolib.com/article/comments/61636

Ответы [ 4 ]

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

В моем случае я просто добавил приведенный ниже код в мой csproj

    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0-rc1-final" />

Я не знаю, что произошло wtf, потому что этот пакет Microsoft.EntityFrameworkCore.SqlServer не может быть найден в диспетчере пакетов, и онпоказывает предупреждение в папке зависимостей проекта, НО ЭТО РАБОТАЕТ МАГИЧЕСКИ

0 голосов
/ 23 августа 2018

Это проблема несовпадения версий.Просто обновите всю справочную версию 2.0 до 2.1.

  • Microsoft.AspNetCore.All --version 2.1.0
  • Microsoft.EntityFrameworkCore --version 2.1.0
  • Microsoft.NETCore.App --version 2.1.0

Надеемся, что при изменении этих ссылок это сработает.

0 голосов
/ 11 февраля 2019

У меня точно такая же проблема, как и у вас.В моем случае я непосредственно ссылался на Microsoft.EntityFramework.Design на файл проекта Visual C # (.csproj) , добавив его в консоль диспетчера пакетов:

Install-Package Microsoft.EntityFrameworkCore.Design

В описанной ошибке, которую я получил, Microsoft.EntityFrameworkCore.Design брошен, и я подумал добавить его.Так что теперь работает.

0 голосов
/ 06 июня 2018

Согласно https://github.com/aspnet/EntityFrameworkCore/issues/11704 у вас есть несовпадение версий.

Некоторые из ваших версий Entity Framework ссылаются на 2.1, а некоторые ссылаются на 2.0.

Вам нужночтобы изменить их все на эталонную версию 2.1.

Вы должны открыть все файлы csproj и найти 2.0 и 2.1.

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