web-dev-qa-db-ja.com

「タイプ 'ConcreteTypeMapping'のオブジェクトをタイプ 'Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingにキャストできません」WebApi on macos

私は、Visual Studioを使用してMac OSでWebAPIを作成する指示に従いました。

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

データベースコンテキスト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; }
    }

クラスdbデータへの汎用クラス

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/8369https://github.com/aspnet/EntityFrameworkCore/issues/ 11704https://www.ctolib.com/article/comments/61636

8
San Jaisy

https://github.com/aspnet/EntityFrameworkCore/issues/11704 に従って、バージョンの不一致があります。

一部のEntity Frameworkバージョンは2.1を参照していますが、一部は2.0を参照しています。

それらをすべて参照バージョン2.1に変更する必要があります。

すべてのcsprojファイルを開き、2.0および2.1を検索する必要があります。

12
mjwills

バージョンの不一致の問題です。すべての参照バージョンを更新する2.0から2.1

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

うまくいけば、これらの参照を変更して、うまくいきます。

2
Md Riyad Khan

私はあなたとまったく同じ問題を抱えています。私の場合、Microsoft.EntityFramework.DesignVisual C#プロジェクトファイル(.csproj)これをPackage Managerコンソールに追加することにより:

Install-Package Microsoft.EntityFrameworkCore.Design

私が得た説明されたエラーでは、Microsoft.EntityFrameworkCore.Designがスローされ、私はそれを追加することを考えました。だから、今実行されます。

2
Dasikely

私の場合、csprojに以下のコードを追加しました

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

このパッケージMicrosoft.EntityFrameworkCore.SqlServerがパッケージマネージャーで見つからず、プロジェクトの依存関係フォルダーに警告が表示されるため、ここでwtfが発生したことはわかりませんが、魔法のように機能しました

0
Gabriel Guilhem