我有一个使用EF保留数据的小型应用程序。

目前,我有一个单独的“ Ticket”类,可以直接映射到“ Ticket”表。

但是,现在需要创建不同类型的票证(例如,游船票,飞机票,火车票),因此我想重构自己的代码以使这3种票证类型都继承自基本票证类。

在维护/修改现有数据库的同时可以执行这种重构吗?

我的直觉是,如果不重新创建数据库,然后从现有数据库复制数据,那么从头开始几乎是不可能做到这一点的。

最佳答案

您必须使用TableAttribute。对于这种情况,EF将创建两个一对一相关的表

[Table("Ticket")]
class Ticket
{
   [Key]
   long ID{get;set;}
}

[Table("AirTicket")]
class AirTicket : Ticket
{
   string SomeSpecialAirProperty{get;set;}
}


这里的票务表将是所有票证的一般列表。

Ticket ticket = db.Ticket.Where(n=>n.ID==ticketID).FirstOrDefault();
//the value of ticket will be an object of child (Air or etc Ticket) type

关于c# - 使用 Entity Framework 时重构代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23493328/

10-13 06:31