我有一个使用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/