2017-01-03 6 views
0

У меня есть Борей БД Microsoft со столом заказов:Entity Framework Db Первый и Enum

CREATE TABLE "Orders" (
    "OrderID" "int" IDENTITY (1, 1) NOT NULL , 
    "CustomerID" nchar (5) NULL , 
    "EmployeeID" "int" NULL , 
    "OrderDate" "datetime" NULL , 
    "RequiredDate" "datetime" NULL , 
    "ShippedDate" "datetime" NULL , 
    "ShipVia" "int" NULL , 
    "Freight" "money" NULL CONSTRAINT "DF_Orders_Freight" DEFAULT (0), 
    "ShipName" nvarchar (40) NULL , 
    "ShipAddress" nvarchar (60) NULL , 
    "ShipCity" nvarchar (15) NULL , 
    "ShipRegion" nvarchar (15) NULL , 
    "ShipPostalCode" nvarchar (10) NULL , 
    "ShipCountry" nvarchar (15) NULL , 
    CONSTRAINT "PK_Orders" PRIMARY KEY CLUSTERED 
    (
     "OrderID" 
    ), 
    CONSTRAINT "FK_Orders_Customers" FOREIGN KEY 
    (
     "CustomerID" 
    ) REFERENCES "dbo"."Customers" (
     "CustomerID" 
    ), 
    CONSTRAINT "FK_Orders_Employees" FOREIGN KEY 
    (
     "EmployeeID" 
    ) REFERENCES "dbo"."Employees" (
     "EmployeeID" 
    ), 
    CONSTRAINT "FK_Orders_Shippers" FOREIGN KEY 
    (
     "ShipVia" 
    ) REFERENCES "dbo"."Shippers" (
     "ShipperID" 
    ) 
) 

Я хочу работать с этой БД с помощью Entity Framework. Для этого я создаю edmx-модель для существующего db. Теперь я хочу добавить состояние свойства enum, которое должно быть рассчитано DateTime.Now, OrderDate, RequiredDate и т. Д., Но я не знаю, как добавить это свойство в класс Order, без изменения таблицы Orders. Должен ли я наследовать класс Order или есть еще более чистый способ для этого?

ответ

0

Добавить частичный класс под то же пространство имен класса Order (с тем же именем) и добавить вашу собственность там:

public partial class Order 
{ 
    public SomeStatusEnum Status 
    { 
      get { //Put your code to figure out the enum here. } 
    } 
} 

Это работает, потому что классы, порожденные EF неравнодушны именно по этой причине ,

Общей ситуацией, с которой вы можете столкнуться при таком подходе, является то, что вы получите ошибку, если просто попробуете добавить класс. Это связано с тем, что модель EDMX создаст файл под обложками с тем же именем класса. Вы можете найти этот файл, если вы пройдете файлы, добавленные дизайнером. Чтобы обойти это, создайте папку (например, POCOs) и разместите там свой класс, а затем измените пространство имен, соответствующее классу EDMX.

Смежные вопросы