Я пытаюсь работать с EF CodeFirst под Oracle с ODP.net. Это мой DbContext класс:Как настроить DbContext для работы с Oracle ODP.Net и EF CodeFirst?
public class MyCEContext : DbContext {
public DbSet<Person> Persons { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Entity<Person>().ToTable("PERSONS","myce");
}
public MyCEContext() :
base(new OracleConnection(
"Data Source=cebd; User ID=myce; Password=****;"), true) {}
}
Проблема заключается в том, что, когда я пытаюсь сделать что-то вроде этого:
MyCEContext context = new MyCEContext();
Person p = context.Persons.Find(1);
Я получаю эту внутреннюю ошибку:
{"ORA-00942: table or view does not exist"}
И таблица существует.
Что я делаю неправильно?
У меня есть как классы, так и свойства с аннотациями данных с верхним регистром Schema/ColumnName соответственно, и они все еще не работают. Однако использование DbSet.Find не работает, DbSet.SingleOrDefault() делает –
Не могли бы вы поместить некоторый код из своих классов или сопоставлений? – fcaldera
, казалось, был опечаткой в одном из атрибутов аннотации таблицы, поэтому кажется, что DbSet.Find перемещает все классы и карты em в свои таблицы при использовании SingleOrDefault() только отображает во время выполнения необходимые таблицы для этого запроса, потому что так я заметил опечатка. Я думал, что, поскольку SingleOrDefault работал, все имена таблиц были в порядке. Короче говоря, Find отображает весь набор списков объектов DbContext. –