当我构建这个Oracle数据库(数据库优先)时,它会为我生成所有模型、上下文、FK关系等。但当我开始查询时,它在上下文中给了我一个错误。(简单的事情,如从(任何表格)中选择*)
出现以下错误。
System.InvalidOperationException
HResult=0x80131509
Message=属性"Address.AddressId"、"Address.AAddressItemId"配置为使用"Identity"值生成器,并映射到同一个表"[DBName].ADRESS"。每个表只能有一列配置为"标识"。为属性调用"ValueGeneratedNever"不应使用"Identity"。
Source=Oracle.EntityFrameworkCore
StackTrace:
在Oracle.EntityFrameworkCore.Internal.OracleModelValidator.ValideSharedColumnsCompatibility(IReadOnlyList`1mappedTypes,字符串tableName)
在Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelValidator.ValideSharedTableCompatibility(IModel型号)
在Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelValidator.Valide(IModel型号)
在Oracle.EntityFrameworkCore.Internal.OracleModelValidator.Valide(IModel型号)
在Microsoft.EntityFrameworkCore.Metadata.Conferences.Internal.ValidatingConvention.Apply(InternalModelBuildermodelBuilder)
在Microsoft.EntityFrameworkCore。元数据。约定。内部。ConventionDispatcher.ImmediateConventionScope.OnModelBuilt(InternalModelBuildermodelBuilder)
在Microsoft.EntityFrameworkCore.Metadata.CConventions.Interal.CConventionDispatcher.OnModelBuilt(InternalModelBuildermodelBuilder)
位于Microsoft.EntityFrameworkCore.Metadata.Interal.Model.Valide()
位于Microsoft.EntityFrameworkCore.ModelBuilder.FinalizeModel()
在Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext上下文,IConventionSetBuilder conventionSetBuilder,IModelValidator验证器)
在Microsoft.EntityFrameworkCore.Infrastructure.ModelSource。<>c__DisplayClass5_0.b_1()
在System.Lazy`1.ViaFactory(LazyThreadSafetyMode模式)
位于System.Lazy`1.ExecutionAndPublication(LazyHelperexecutionAndPublication,布尔使用DefaultConstructor)
在System.Lazy`1.CreateValue()
在System.Lazy`1.get_Value()
在Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.GetModel(DbContext上下文,IConventionSetBuilder conventionSetBuilder,IModelValidator验证器)
在Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()
在Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()
在Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServicesBuilder<>c.b__7_2(I服务提供商p)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSitefactoryCallSite,ServiceProviderEngineScope scope)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSitecallSite,TAargument参数)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSitescopedCallSite,ServiceProviderEngineScope范围)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSitecallSite,TAargument参数)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite施工方CallSite,服务供应商EngineScope scope)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSitecallSite,TAargument参数)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSitescopedCallSite,ServiceProviderEngineScope范围)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSitecallSite,TAargument参数)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Reve(IServiceCallSitecallSite,ServiceProviderEngineScope范围)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine。<>c__DisplayClass1_0.b_0(服务提供商工程范围范围)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(类型serviceType,ServiceProviderEngineScope ServiceProviderEngineScope)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(类型serviceType)
在Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider提供商,类型服务类型)
在Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider供应商)
在Microsoft.EntityFrameworkCore.DbContext.get_DbContext依赖项()
在Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()
在Microsoft.EntityFrameworkCore.DbContext.get_DbContext依赖项()
位于Microsoft.EntityFrameworkCore.DbContext.get_Model()
在Microsoft.EntityFrameworkCore.Internal.InteralDbSet`1.get_EntityType()
在Microsoft.EntityFrameworkCore.Internal.InteralDbSet`1.CheckState()
在Microsoft.EntityFrameworkCore.Internal.InteralDbSet`1.get_EntityQueryable()
在Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.System.Linq.IQueryable.get_Provider()
在System.Linq.Queryable.Count[TSource](IQueryable `1 source)
位于中的OracleConsoleApp.Program.Main(String[]args)C: \GitPlayGround\OracleConsoleApp/OracleConsoleApp\Program.cs:line 47
我需要在此复杂结构中使用FK连接。我没有使用Oracle的经验,也没有使用Oracle.EntityFrameworkCore(2.2.6,应用程序核心2.2)
有人能告诉我该怎么做吗?找不到开始解决这个问题的线索。
经过深入研究,我的同事提出了解决方案。在Oracle中生成的值的工作不同。首先使用数据库,它设置数据注释ValueGeneratedOnAdd();。
这不是一个工作模式和背景。
因此,有选择地删除此ValueGeneratedOnAdd()将产生有效的结果并解决问题。