Identitäts -ID -Datentyp in OracleC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Identitäts -ID -Datentyp in Oracle

Post by Anonymous »

Ich erstelle ein neues Projekt mit .NET 9 mit Entity Framework Core und Oracle 19C als Datenbank. Ich habe Identität 9 hinzugefügt und als ich die anfängliche Migration generiert habe, erstellte sie die Tabellen mit Nvarchar (450) Datentyp für jede Spalte, die eine Richtlinie ist.

Code: Select all

migrationBuilder.CreateTable(
name: "AspNetRoles",
columns: table => new
{
Id = table.Column(type: "NVARCHAR2(450)", nullable: false),
Name = table.Column(type: "NVARCHAR2(256)", maxLength: 256, nullable: true),
NormalizedName = table.Column(type: "NVARCHAR2(256)", maxLength: 256, nullable: true),
ConcurrencyStamp = table.Column(type: "NVARCHAR2(2000)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AspNetRoles", x => x.Id);
});
< /code>
Dieses Skript wurde mit: < /p>
generiertadd-migration AddIdentity
, die es in Visual Studio 2022 automatisch generierte. RAW (16)
migrationBuilder.AlterColumn(
name: "Id",
table: "AspNetUsers",
type: "RAW(16)",
nullable: false,
oldClrType: typeof(string),
oldType: "NVARCHAR2(450)");
< /code>
Muss ich diese Aussagen ausziehen oder besorgt sein? Es scheint seltsam, dass das von VS2022 produzierte ursprüngliche Skript es in eine Richtung und dann mit den nächsten Migration die Datentypen ändern würde. Jede Hilfe oder Ratschläge würden geschätzt. < /P>
Bearbeiten --- Ich habe gerade versucht, die Migration auszuführen, um die DB zu aktualisieren. Es scheint nicht gern zu erstellen, ein RAW (16) innerhalb des Oracle DB zu erstellen. < /P>
Applying migration '20250402143035_ExtendIdentityUser'.
fail: Microsoft.EntityFrameworkCore.Database.Command[0]
2025-04-02 22:33:03.095313 ThreadID:1 (ERROR) OracleRelationalCommand.ExecuteNonQuery() : Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-02267: column type incompatible with referenced column type
ORA-06512: at line 10
https://docs.oracle.com/error-help/db/ora-02267/
at OracleInternal.ServiceObjects.OracleFailoverMgrImpl.OnError(OracleConnection connection, CallHistoryRecord chr, Object mi, Exception ex, Boolean bTopLevelCall, Boolean& bCanRecordNewCall)
at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery()
at Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory.OracleRelationalCommandBuilder.OracleRelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
2025-04-02 22:33:03.095313 ThreadID:1 (ERROR) OracleRelationalCommand.ExecuteNonQuery() : Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-02267: column type incompatible with referenced column type
ORA-06512: at line 10
https://docs.oracle.com/error-help/db/ora-02267/
at OracleInternal.ServiceObjects.OracleFailoverMgrImpl.OnError(OracleConnection connection, CallHistoryRecord chr, Object mi, Exception ex, Boolean bTopLevelCall, Boolean& bCanRecordNewCall)
at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery()
at Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory.OracleRelationalCommandBuilder.OracleRelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
Failed executing DbCommand (169ms) [Parameters=[], CommandType='Text', CommandTimeout='0']
declare
l_nullable user_tab_columns.nullable % type;
begin
select nullable into l_nullable
from user_tab_columns
where table_name = 'AspNetUserTokens'
and column_name = 'UserId'
;
if l_nullable = 'N' then
EXECUTE IMMEDIATE 'ALTER TABLE "AspNetUserTokens" MODIFY "UserId" RAW(16) ';
else
EXECUTE IMMEDIATE 'ALTER TABLE "AspNetUserTokens" MODIFY "UserId" RAW(16) NOT NULL';
end if;
end;
Failed executing DbCommand (169ms) [Parameters=[], CommandType='Text', CommandTimeout='0']
declare
l_nullable user_tab_columns.nullable % type;
begin
select nullable into l_nullable
from user_tab_columns
where table_name = 'AspNetUserTokens'
and column_name = 'UserId'
;
if l_nullable = 'N' then
EXECUTE IMMEDIATE 'ALTER TABLE "AspNetUserTokens" MODIFY "UserId" RAW(16) ';
else
EXECUTE IMMEDIATE 'ALTER TABLE "AspNetUserTokens" MODIFY "UserId" RAW(16) NOT NULL';
end if;
end;
fail: Microsoft.EntityFrameworkCore.Infrastructure[0]
2025-04-02 22:33:03.106263 ThreadID:1 (ERROR) OracleExecutionStrategy.Execute() : Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-02267: column type incompatible with referenced column type
ORA-06512: at line 10
https://docs.oracle.com/error-help/db/ora-02267/
at OracleInternal.ServiceObjects.OracleFailoverMgrImpl.OnError(OracleConnection connection, CallHistoryRecord chr, Object mi, Exception ex, Boolean bTopLevelCall, Boolean& bCanRecordNewCall)
at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery()
at Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory.OracleRelationalCommandBuilder.OracleRelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.Execute(IReadOnlyList`1 migrationCommands, IRelationalConnection connection, MigrationExecutionState executionState, Boolean beginTransaction, Boolean commitTransaction, Nullable`1 isolationLevel)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.c.b__3_1(DbContext _, ValueTuple`6 s)
at Oracle.EntityFrameworkCore.Storage.Internal.OracleExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
2025-04-02 22:33:03.106263 ThreadID:1 (ERROR) OracleExecutionStrategy.Execute() : Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-02267: column type incompatible with referenced column type
ORA-06512: at line 10
https://docs.oracle.com/error-help/db/ora-02267/
at OracleInternal.ServiceObjects.OracleFailoverMgrImpl.OnError(OracleConnection connection, CallHistoryRecord chr, Object mi, Exception ex, Boolean bTopLevelCall, Boolean& bCanRecordNewCall)
at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery()
at Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory.OracleRelationalCommandBuilder.OracleRelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.Execute(IReadOnlyList`1 migrationCommands, IRelationalConnection connection, MigrationExecutionState executionState, Boolean beginTransaction, Boolean commitTransaction, Nullable`1 isolationLevel)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.c.b__3_1(DbContext _, ValueTuple`6 s)
at Oracle.EntityFrameworkCore.Storage.Internal.OracleExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
fail: Microsoft.EntityFrameworkCore.Infrastructure[0]
2025-04-02 22:33:03.107582 ThreadID:1 (ERROR) OracleExecutionStrategy.Execute() : Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-02267: column type incompatible with referenced column type
ORA-06512: at line 10
https://docs.oracle.com/error-help/db/ora-02267/
at OracleInternal.ServiceObjects.OracleFailoverMgrImpl.OnError(OracleConnection connection, CallHistoryRecord chr, Object mi, Exception ex, Boolean bTopLevelCall, Boolean& bCanRecordNewCall)
at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery()
at Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory.OracleRelationalCommandBuilder.OracleRelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.Execute(IReadOnlyList`1 migrationCommands, IRelationalConnection connection, MigrationExecutionState executionState, Boolean beginTransaction, Boolean commitTransaction, Nullable`1 isolationLevel)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.c.b__3_1(DbContext _, ValueTuple`6 s)
at Oracle.EntityFrameworkCore.Storage.Internal.OracleExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IReadOnlyList`1 migrationCommands, IRelationalConnection connection, MigrationExecutionState executionState, Boolean commitTransaction, Nullable`1 isolationLevel)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.MigrateImplementation(DbContext context, String targetMigration, MigrationExecutionState state, Boolean useTransaction)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.c.b__20_1(DbContext c, ValueTuple`4 s)
at Oracle.EntityFrameworkCore.Storage.Internal.OracleExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
2025-04-02 22:33:03.107582 ThreadID:1 (ERROR) OracleExecutionStrategy.Execute() : Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-02267: column type incompatible with referenced column type
ORA-06512: at line 10
https://docs.oracle.com/error-help/db/ora-02267/
at OracleInternal.ServiceObjects.OracleFailoverMgrImpl.OnError(OracleConnection connection, CallHistoryRecord chr, Object mi, Exception ex, Boolean bTopLevelCall, Boolean& bCanRecordNewCall)
at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery()
at Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory.OracleRelationalCommandBuilder.OracleRelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.Execute(IReadOnlyList`1 migrationCommands, IRelationalConnection connection, MigrationExecutionState executionState, Boolean beginTransaction, Boolean commitTransaction, Nullable`1 isolationLevel)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.c.b__3_1(DbContext _, ValueTuple`6 s)
at Oracle.EntityFrameworkCore.Storage.Internal.OracleExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IReadOnlyList`1 migrationCommands, IRelationalConnection connection, MigrationExecutionState executionState, Boolean commitTransaction, Nullable`1 isolationLevel)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.MigrateImplementation(DbContext context, String targetMigration, MigrationExecutionState state, Boolean useTransaction)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.c.b__20_1(DbContext c, ValueTuple`4 s)
at Oracle.EntityFrameworkCore.Storage.Internal.OracleExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-02267: column type incompatible with referenced column type
ORA-06512: at line 10
https://docs.oracle.com/error-help/db/ora-02267/
at OracleInternal.ServiceObjects.OracleFailoverMgrImpl.OnError(OracleConnection connection, CallHistoryRecord chr, Object mi, Exception ex, Boolean bTopLevelCall, Boolean& bCanRecordNewCall)
at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery()
at Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory.OracleRelationalCommandBuilder.OracleRelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.Execute(IReadOnlyList`1 migrationCommands, IRelationalConnection connection, MigrationExecutionState executionState, Boolean beginTransaction, Boolean commitTransaction, Nullable`1 isolationLevel)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.c.b__3_1(DbContext _, ValueTuple`6 s)
at Oracle.EntityFrameworkCore.Storage.Internal.OracleExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IReadOnlyList`1 migrationCommands, IRelationalConnection connection, MigrationExecutionState executionState, Boolean commitTransaction, Nullable`1 isolationLevel)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.MigrateImplementation(DbContext context, String targetMigration, MigrationExecutionState state, Boolean useTransaction)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.c.b__20_1(DbContext c, ValueTuple`4 s)
at Oracle.EntityFrameworkCore.Storage.Internal.OracleExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.c__DisplayClass0_0.b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
ORA-02267: column type incompatible with referenced column type
ORA-06512: at line 10
< /code>
Dies ist der Ansicht, dass der Code zum Generieren des ursprünglichen Identitätsschemas für gültige Datentypen innerhalb von Oracle mehr Bewusstsein hat als die Engine, die die Migrationen generiert, wenn Sie Änderungen vornehmen. Irgendwelche Ideen oder sollte ich einfach die Altersanweisungen aus der Migration entfernen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post