#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 сам и вручную заполнил его. Не беспокойтесь, спасибо за вашу помощь.