wake-up-neo.net

"Objekt des Typs 'ConcreteTypeMapping' kann nicht in Typ" Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping "umgewandelt werden

Ich habe die Anweisung befolgt, die WebAPI in Mac OS mit Visual Studio zu erstellen.

https://docs.Microsoft.com/en-us/aspnet/core/tutorials/first-web-api-mac?view=aspnetcore-2.1https://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

Datenbankkontext-CS-Datei

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

AdminUser.cs-Datei

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; }
    }

Generische Klasse für DB-Daten

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;
        }
    }

Tabelle in der Datenbank 

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);

Da wird beim Debuggen ein Fehler als 

Das Objekt des Typs 'ConcreteTypeMapping' kann nicht in den Typ 'Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping' umgewandelt werden

Weitere Details zum Screenshot  details of error

Erledigte einige Nachforschungen, konnte jedoch keine Lösung finden https://github.com/aspnet/EntityFrameworkCore/issues/8369https://github.com/aspnet/EntityFrameworkCore/issues/11704https://www.ctolib.com/article/comments/61636

8
San Jaisy

Gemäß https://github.com/aspnet/EntityFrameworkCore/issues/11704 haben Sie einen Versionskonflikt.

Einige Ihrer Entity Framework-Versionen referenzieren auf 2.1, während andere auf 2.0 verweisen.

Sie müssen alle in Referenzversion 2.1 ändern.

Sie sollten alle csproj-Dateien öffnen und nach 2.0 und 2.1 suchen.

12
mjwills

Es ist ein Versionsproblem. Aktualisieren Sie einfach alle Referenzversion 2.0 auf 2.1

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

Hoffentlich ändern Sie diese Referenzen, es wird funktionieren.

2
Md Riyad Khan

In meinem Fall habe ich gerade den folgenden Code in meinen csproj eingefügt

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

Ich weiß nicht, dass wtf hier passiert ist, da dieses Paket Microsoft.EntityFrameworkCore.SqlServer nicht im Paket-Manager gefunden werden kann und eine Warnung im Ordner für Projektabhängigkeiten anzeigt, ABER ES ARBEITET MAGISCH

0
Gabriel Guilhem

Ich habe genau das gleiche Problem wie du. In meinem Fall habe ich direkt auf die Microsoft.EntityFramework.Design - Datei auf dieVisual C # -Projektdatei (.csproj)verwiesen, indem ich die Package Manager Console hinzugefügt habe:

Install-Package Microsoft.EntityFrameworkCore.Design

In dem beschriebenen Fehler, den ich bekam, wird das Microsoft.EntityFrameworkCore.Design geworfen und ich dachte, es hinzuzufügen. So läuft es jetzt.

0
Dasikely