Я сопоставляю проект Entity Framework с существующей базой данных Oracle.У меня есть класс:
public class Order
{
[Key]
public string OrderNo {get;set;} // Oracle type VARCHAR2(100)
public decimal Cost {get;set;} // Oracle type NUMBER (no precision)
}
public DbSet<Order> Orders {get;set;}
Затем выполнить следующее:
context.Orders.Find("0001");
возвращает ошибку Specified cast is not valid!
.Похоже, это вызвано очень большим десятичным значением в столбце COST.Я попытался установить следующий атрибут на объекте:
[Column("ROUND(COST,2)"]
public decimal Cost {get;set;}
, который вызывает исключение сгенерированного SQL OracleException: ORA-00904: "Extent1"."ROUND(COST,2)": invalid identifier
.Я хотел бы, чтобы он генерировал ROUND("Extent1".COST,2)
.
Есть ли способ заставить базу данных преобразовать столбец как часть оператора SQL?