核心脚手架 Oracle DB 将给出多个 ID(主键)作为结果



当我构建这个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()将产生有效的结果并解决问题。

最新更新