0

EFコア2.0を使用してSQLiteデータベース(単純なもの)を構築しようとしています。次のコードでAdd-Migrationを実行しようとすると、以下のコードで失敗します。EFコアのAdd-MigrationがSystem.TypeLoadExceptionで失敗する

public class RothSensor 
{ 
    public int Id { get; set; } 

    public string Location { get; set; } 

    public double CurrentTemp { get; set; } 

    public double TargetTemp { get; set; } 

    public enum _mode 
    { 
     Normal = 0, 
     Night = 1, 
     Holliday = 2 
    } 

    public _mode Mode { get; set; } 

    public double MinimumTemp { get; set; } 

    public double MaximumTemp { get; set; } 

    public int UnitId { get; set; } 

    public RothUnit Unit { get; set; } 

} 

public class RothUnit 
{ 

    public int Id { get; set; } 

    public string Name { get; set; } 

    public List<RothSensor> Sensors { get; set; } 


} 

public class HADataContext : DbContext 
{ 
    public DbSet<RothUnit> RUnits { get; set; } 
    public DbSet<RothSensor> RSensors { get; set; } 

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
    { 
     optionsBuilder.UseSqlite("Data Source = HomeAutomation.db"); 
    } 
} 

エラーコードは次のとおりです。 -

PM>アドオンの移行HomeAutomationDB
System.TypeLoadException:アセンブリ「System.Runtime、バージョンから型 '可能System.Globalization.CultureInfo' をロードできませんでした= 4.0.0.0、Culture =ニュートラル、PublicKeyToken = b03f5f7f11d50a3a '。 System.Collections.Immutable.ImmutableSortedDictionary 2.Node.SetOrAdd(TKey key, TValue value, IComparer 1 keyComparer、たIEqualityComparer 1 valueComparer, Boolean overwriteExistingValue, Boolean& replacedExistingValue, Boolean& mutated) at System.Collections.Immutable.ImmutableSortedDictionary 2.Node.SetItem(処理鍵キー、TValue値たIComparer 1 keyComparer, IEqualityComparer 1 valueComparer、ブール& replacedExistingValue、変異ブール&)System.Collections.Immutable.ImmutableSortedDictionary 2.Builder.set_Item(TKey key, TValue value) at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.RelationshipDiscoveryConvention.GetNavigationCandidates(EntityType entityType) at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.RelationshipDiscoveryConvention.FindRelationshipCandidates(InternalEntityTypeBuilder entityTypeBuilder) at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.RelationshipDiscoveryConvention.DiscoverRelationships(InternalEntityTypeBuilder entityTypeBuilder) at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.RelationshipDiscoveryConvention.Apply(InternalEntityTypeBuilder entityTypeBuilder) at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnEntityTypeAdded(InternalEntityTypeBuilder entityTypeBuilder) at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.OnEntityTypeAdded(InternalEntityTypeBuilder entityTypeBuilder) at Microsoft.EntityFrameworkCore.Metadata.Internal.Model.AddEntityType(EntityType entityType) at Microsoft.EntityFrameworkCore.Metadata.Internal.Model.AddEntityType(Type type, ConfigurationSource configurationSource) at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalModelBuilder.Entity(TypeIdentity type, ConfigurationSource configurationSource) at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalModelBuilder.Entity(Type type, ConfigurationSource configurationSource) at Microsoft.EntityFrameworkCore.ModelBuilder.Entity(Type type) at Microsoft.EntityFrameworkCore.Infrastructure.ModelCustomizer.FindSets(ModelBuilder modelBuilder, DbContext context) at Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelCustomizer.FindSets(ModelBuilder modelBuilder, DbContext context) at Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelCustomizer.Customize(ModelBuilder modelBuilder, DbContext context) at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder, IModelValidator validator) at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.<>c__DisplayClass5_0.<GetModel>b__0(Object k) at System.Collections.Concurrent.ConcurrentDictionaryで でMicrosoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitorでMicrosoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(scopedCallSite scopedCallSite、のServiceProviderプロバイダで2.GetOrAdd(処理鍵キーのFunc 2 valueFactory) at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.GetModel(DbContext context, IConventionSetBuilder conventionSetBuilder, IModelValidator validator) at Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel() at Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model() at Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServicesBuilder.<>c.<TryAddCoreServices>b__7_1(IServiceProvider p) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor 2.VisitCallSite(IServiceCallSite呼び出し場所、TArgument引数) ) 2.VisitCallSite(IServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor 2.VisitCallSite(IServiceCallSite callSite、TArgument Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContextでMicrosoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite、のServiceProviderプロバイダで引数) )Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor 2.VisitCallSite(IServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass22_0.<RealizeService>b__0(ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies() at Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider() at Microsoft.EntityFrameworkCore.DbContext.Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<System.IServiceProvider>.get_Instance() at Microsoft.EntityFrameworkCore.Infrastructure.AccessorExtensions.GetService[TService](IInfrastructure 1アクセッサで ) (アクションアクション) アセンブリ 'System.Runtime、Version = 4.0.0.0、'から 'System.Globalization.CultureInfo'型を読み込めませんでした。文化=ニュートラル、PublicKeyToken = b03f5f7f11d50a3a '。
PM>

私は私がオンライン見つけることができるすべての可能性のヒントを試してみましたが、それはまだ失敗。私がRothUnitモデルからListを削除し、RothSensorクラスの最後の行を削除すると、それが通り抜ける唯一の方法です。

EFコアまたはマイコードを使用しているかどうかわかりません。誰も私を正しい方向に導くことができますか?

+0

RothsensorとRothunitの関係を定義しましたか? –

+0

はい私はEFがそれを発見するのではなく、明示的に関係を定義しようとしました。しかし、なぜそれが失敗するのかわかりません! – DreamNet

+0

modelbuilder内のエンティティの主キーまたは外部キーを定義しましたか? –

答えて

0

多くの掘り出しを行い、EntityFrameworkCore GitHubページに問題を提出した後。これはEF Core 2.0自体の問題であると思われます。彼らはそれを認識しており、将来のリリースで対処されています。

は何とかあなたは以下のリンクでそれを見つけることができるという回避策は次のとおりです。 - GitHub EF Core

回避策はEFコアチームの礼儀です。