Мы находимся в процессе миграции существующего приложения на ядро. NET. Для этого нам также нужно перейти к первым моделям кода.
Я добавил нашу базу данных в модели. Это отлично работает. Модели генерируются в единственном виде:
public partial class Order
{
[Key]
public int Id { get; set; }
[StringLength(50)]
public string OrderNumber { get; set; }
[StringLength(50)]
public string AssemblyUnitName { get; set; }
[StringLength(50)]
public string Serial { get; set; }
}
Ссылка в контексте БД также находится в единственном виде:
public partial class KappContext : DbContext
{
public KappContext()
{
}
public KappContext(DbContextOptions<KappContext> options)
: base(options)
{
}
...
public virtual DbSet<Order> Order { get; set; }
...
}
Чтобы уменьшить влияние рефакторинга слишком большого количества кода, мы хотим наши модели в контексте базы данных должны быть во множественном числе, например:
public virtual DbSet<Order> Orders { get; set; }
Когда я делаю это, просто переименовываю и выполняю некоторый код, такой как:
var orders = await _context.Orders
.OrderBy(ot => ot.OrderNumber)
.AsNoTracking()
.ToListAsync();
это бросает исключение:
SqlException: Invalid object name 'Orders'.
Microsoft.Data.SqlClient.SqlCommand+<>c.<ExecuteDbDataReaderAsync>b__164_0(Task<SqlDataReader> result)
System.Threading.Tasks.ContinuationResultTaskFromResultTask<TAntecedentResult, TResult>.InnerInvoke()
System.Threading.Tasks.Task+<>c.<.cctor>b__274_0(object obj)
System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, object state)
System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, object state)
System.Threading.Tasks.Task.ExecuteWithThreadLocal(ref Task currentTaskSlot, Thread threadPoolThread)
Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable<T>+AsyncEnumerator.InitializeReaderAsync(DbContext _, bool result, CancellationToken cancellationToken)
Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync<TState, TResult>(TState state, Func<DbContext, TState, CancellationToken, Task<TResult>> operation, Func<DbContext, TState, CancellationToken, Task<ExecutionResult<TResult>>> verifySucceeded, CancellationToken cancellationToken)
Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable<T>+AsyncEnumerator.MoveNextAsync()
Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync<TSource>(IQueryable<TSource> source, CancellationToken cancellationToken)
Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync<TSource>(IQueryable<TSource> source, CancellationToken cancellationToken)
Kapp.Controllers.OrderController.Get() in OrderController.cs
+
var orders = await _context.Orders
Я уже пытался использовать мультипликатор bricelam. Это больше не поддерживается в. NET core 3.
Я также пытался реализовать службу разработки, реализуя интерфейс IPluralizer, но это также больше не поддерживается в. NET core 3.
Как мне добиться множественного именования свойств для моих моделей в контексте моей базы данных?