我有Microsoft的Northwind数据库与表订单:
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使用此数据库。为此,我为现有的db创建了edmx-model。现在我想添加枚举属性Status,它应该由DateTime.Now,OrderDate,RequiredDate等计算,但我不知道如何将此属性添加到Order类,而不更改Orders表。 我应该从Order类继承还是有更简洁的方法呢?
答案 0 :(得分:0)
在Order类(具有相同名称)的相同名称空间下添加一个分部类,并在那里添加您的属性:
public partial class Order
{
public SomeStatusEnum Status
{
get { //Put your code to figure out the enum here. }
}
}
这是有效的,因为EF生成的类是部分的,正是出于这个原因。
这种方法可能遇到的一种常见情况是,如果您只是尝试添加类,则会出现错误。这是因为EDMX模型将在封面下创建一个具有相同名称的文件。如果遍历设计器添加的文件,则可以找到此文件。要解决这个问题,请创建一个文件夹(例如POCO)并将您的类放在那里,然后更改名称空间以匹配EDMX类的名称空间。