繁体   English   中英

实体框架Db First和Enum

[英]Entity Framework Db First and Enum

我使用表Orders拥有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"
    )
)

我想通过实体框架使用此数据库。 为此,我为现有数据库创建edmx-model。 现在,我想添加枚举属性Status,该属性应该由DateTime.Now,OrderDate,RequiredDate等计算,但是我不知道如何在不更改Orders表的情况下将该属性添加到Order类。 我应该继承Order类还是有一些更简洁的方法?

在与Order类相同的名称空间下添加一个局部类(具有相同的名称),然后在其中添加属性:

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

这样做是因为正是由于这个原因,EF生成的类是局部的。

使用此方法可能会遇到的一种常见情况是,如果您只是尝试添加类,则会出现错误。 这是因为EDMX模型将在幕后使用该类的相同名称创建一个文件。 如果遍历设计者添加的文件,则可以找到此文件。 为了解决这个问题,创建一个文件夹(例如POCO)并将您的类放在其中,然后更改名称空间以匹配EDMX类的名称空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM