Пожалуйста, помогите, я использую EF Core с Oracle (сначала код) и получаю эту ошибку после обновления базы данных dotnet ef, и я понятия не имею, какой недопустимый тип данных:
< pre class="lang-bash Prettyprint-override">
public class RunnerStateConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder
.HasKey(s => s.Id);
builder
.HasIndex(s => s.Name)
.IsUnique(true);
builder
.HasData(
new RunnerState
{
Id = 1,
Name = "AVAILABLE",
Description = "The runner is available for receiving and executing assigned tasks.",
},
new RunnerState
{
Id = 2,
Name = "UNAVAILABLE",
Description = "The runner is unavailable for receiving and executing assigned tasks.",
});
}
}
Мне нужно добавить еще некоторые детали, но я действительно не знаю, что еще добавить. Пользователь/схема oracle пусты. Это первая попытка обновления базы данных после первоначальной миграции. Спасибо! РЕДАКТИРОВАТЬ!!!: Я обнаружил недопустимый тип данных: это было логическое значение в другой таблице. Как я узнал в другом вопросе SO, Oracle поддерживает только логический тип из 23c, а мне приходится работать с 18c. «Проблема» заключается в том, что EF Core использует тип BOOLEAN в сгенерированном SQL. У меня также есть решение, если у кого-то возникнут проблемы, я напишу его как ответ на этот вопрос.
Пожалуйста, помогите, я использую EF Core с Oracle (сначала код) и получаю эту ошибку после обновления базы данных dotnet ef, и я понятия не имею, какой недопустимый тип данных: < pre class="lang-bash Prettyprint-override">[code]2024-09-27 16:11:34,098 INFO Microsoft.EntityFrameworkCore.Database.Command - Executed DbCommand (73ms) [Parameters=[], CommandType='Text', CommandTimeout='0'] BEGIN EXECUTE IMMEDIATE 'CREATE TABLE "RunnerStates" ( "Id" NUMBER(10) GENERATED BY DEFAULT ON NULL AS IDENTITY NOT NULL, "Name" NVARCHAR2(450) NOT NULL, "Description" NVARCHAR2(2000), CONSTRAINT "PK_RunnerStates" PRIMARY KEY ("Id") )'; END; 2024-09-27 16:11:34,121 ERROR Microsoft.EntityFrameworkCore.Database.Command - 2024-09-27 16:11:34.121034 ThreadID:1 (ERROR) OracleRelationalCommand.ExecuteNonQuery() : Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-00902: invalid datatype ORA-06512: at line 2 https://docs.oracle.com/error-help/db/ora-00902/ 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) 2024-09-27 16:11:34.121034 ThreadID:1 (ERROR) OracleRelationalCommand.ExecuteNonQuery() : Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-00902: invalid datatype ORA-06512: at line 2 https://docs.oracle.com/error-help/db/ora-00902/ 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) [/code] Это сущность в C#: [code]public class RunnerState { public int Id { get; set; }
public required string Name { get; set; }
public string? Description { get; set; } } [/code] Это конфигурация объекта: [code]public class RunnerStateConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder .HasKey(s => s.Id); builder .HasIndex(s => s.Name) .IsUnique(true); builder .HasData( new RunnerState { Id = 1, Name = "AVAILABLE", Description = "The runner is available for receiving and executing assigned tasks.", }, new RunnerState { Id = 2, Name = "UNAVAILABLE", Description = "The runner is unavailable for receiving and executing assigned tasks.", }); } } [/code] Мне нужно добавить еще некоторые детали, но я действительно не знаю, что еще добавить. Пользователь/схема oracle пусты. Это первая попытка обновления базы данных после первоначальной миграции. [b]Спасибо![/b] [b]РЕДАКТИРОВАТЬ!!!: Я обнаружил недопустимый тип данных: это было логическое значение в другой таблице. Как я узнал в другом вопросе SO, Oracle поддерживает только логический тип из 23c, а мне приходится работать с 18c. «Проблема» заключается в том, что EF Core использует тип BOOLEAN в сгенерированном SQL. У меня также есть решение, если у кого-то возникнут проблемы, я напишу его как ответ на этот вопрос.[/b]