EF 6 с ODP.Net Oracle.ManagedDataAccess, Как использовать не заглавную букву для свойств класса?

Я использую EF 6 с ODP.NetOracle.ManagedDataAccess для моего ASP.Net MVC веб-приложения.

У меня есть следующееModel называетсяEmployee (вModel\Employee.cs файл):

[Table("TBLEMPLOYEE")]
public class Employee {
    public int Id { get; set; }
    public string Name { get; set; }
    public string Gender { get; set; }
    public DateTime DateOfBirth { get; set; }
    public int EmployeeType { get; set; }
    public double? AnnualSalary { get; set; }
    public double? HourlyPay { get; set; }
    public double? HoursWorked { get; set; }
    public string City { get; set; }
}

Так же какEmployeeContext.cs

public class EmployeeContext : DbContext {
    public DbSet<Employee> Employees { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder) {
        modelBuilder.HasDefaultSchema("myschema");
    }
}

Тогда по моемуEmployeeController.csЯ используюEmployee иEmployeeContext как это:

public ActionResult Details(int id = 1) {
    try {
        EmployeeContext employeeContext = new EmployeeContext();
        employeeContext.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
        Employee employee = employeeContext.Employees.Single(x => x.ID == id);
        return View(employee);
    } catch (Exception e) {
        return View(e);
    }
}

Когда я получаю следующую Внутреннюю ошибку исключения:

Oracle.ManagedDataAccess.Client.OracleException: ORA-00904: «Extent1». «Id»: неверный идентификатор

Ошибка исключения возникает в:

Employee employee = employeeContext.Employees.Single(x => x.ID == id);

Продолжая отладку с помощью консоли вывода Debug, я заметил, что EF генерирует следующий SQL-запрос для извлечения данных:

SELECT 
"Extent1"."Id" AS "Id", 
"Extent1"."Name" AS "Name", 
"Extent1"."Gender" AS "Gender", 
"Extent1"."DateOfBirth" AS "DateOfBirth", 
"Extent1"."EmployeeType" AS "EmployeeType", 
"Extent1"."AnnualSalary" AS "AnnualSalary", 
"Extent1"."HourlyPay" AS "HourlyPay", 
"Extent1"."HoursWorked" AS "HoursWorked", 
"Extent1"."City" AS "City"
FROM "MYSCHEMA"."TBLEMPLOYEE" "Extent1"
WHERE ("Extent1"."Id" = :p__linq__0) AND (ROWNUM <= (2) )

И, как я делаю еще некоторые исследования, я понимаю, что из-за настоящего кавычки" " в именах столбцов SQL-запросов (таких как."Id", ".EmployeeType", ".HourlyPay" и т. д.) запрос не может найти совпадающие имена столбцов, так как все имена столбцов таблицы данных Oracle представлены заглавными буквами (то есть:."ID", ".EMPLOYEETYPE", ".HOURLYPAY" и так далее).

Теперь, когда я изменил определение класса примерно так:

[Table("TBLEMPLOYEE")]
public class Employee {
    public int ID { get; set; }
    public string NAME { get; set; }
    public string GENDER { get; set; }
    public DateTime DATEOFBIRTH { get; set; }
    public int EMPLOYEETYPE { get; set; }
    public double? ANNUALSALARY { get; set; }
    public double? HOURLYPAY { get; set; }
    public double? HOURSWORKED { get; set; }
    public string CITY { get; set; }
}

Работает отлично.Но я не хочу этого.

Как типичный C # кодер, я нашел этодовольно необычно иметь все заглавные буквы для полей / свойств класса.

У меня вопрос, есть ли способ сохранить свойства класса, используя комбинацию заглавных и строчных букв, только для запроса версии этих свойств сгенерированных заглавных букв?

Опять же я использую EF6.0.0.0 и ODP.NetOracle.ManagedDataAccess версия4.121.2.0 а такжеOracle.ManagedDataAccess.EntityFramework версия6.121.2.0 если эти вещи имеют значение.

Ответы на вопрос(2)

Ваш ответ на вопрос