Сопоставьте таблицу Oracle DB без основного, но с уникальным индексом

#c# #oracle #entity-framework #orm #mapping

#c# #Oracle #entity-framework #orm #сопоставление

Вопрос:

У нас есть база данных Oracle, которую никак нельзя изменить. Большинство таблиц являются общими и…у них нет первичного ключа. ORM (EF) не будет сопоставлять таблицу без первичного ключа.

Но я вижу, что таблица имеет уникальный индекс.

Могу ли я сопоставить эту таблицу с EF 6 с помощью уникального индекса.

Комментарии:

1. Какой подход вы используете: сначала код или сначала база данных?

2. Сначала база данных.

Ответ №1:

Установите первичный ключ в режим тишины:

 public class MyContext: DbContext
{
    public virtual DbSet<Car> Cars { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Car>()
            .HasKey(c => new { c.State, c.LicensePlate });
    }
}
  

Источник:https://learn.microsoft.com/pl-pl/ef/core/modeling/keys?tabs=data-annotations

Комментарии:

1. Спасибо. Дело в том, что мы не можем сопоставить таблицу, поэтому «Car» не существует, следовательно, не можем использовать этот код: Entity<Car>…

2. Итак, у вас в настоящее время нет класса model (POCO, entity)?

3. Правильно, это то, что я пытался сделать — сопоставить ее.

4. У вас есть DbContext или вам нужно все?

5. Да, у меня есть DbContext, и другие объекты сопоставлены. Это больше не проблема, система завершена. Я не могу точно вспомнить, но я думаю, что я только что создал DTO сам и вручную заполнил его. Не беспокойтесь, спасибо за вашу помощь.