如何首先在Entity Framework代码中创建2个具有相同类型的dbset?

法拉第敌人

我创建了2个代表数据库实体的类。

第一实体:

public enum FlightStatus
{
        checkIn,
        gateClosed,
        arrived,
        departedAt,
        unknown,
        canceled,
        expectedAt,
        delayed,
        InFlight
}

public class Flight 
{
        [Key]
        public string FlightNumber { get; set; }
        public DateTime Arrival { get; set; }
        public DateTime Departure { get; set; }
        public string CityOfArrival { get; set; }
        public string CityOfDeparture { get; set; }
        public char Terminal { get; set; }

        public FlightStatus Status { get; set; }
        public int Gate { get; set; }

        public virtual ICollection<Passanger> PassengerList { get; set; }
        public double PriceForFirstClass { get; set; }
        public double PriceForBusiness { get; set; }
        public double PriceForEconom { get; set; }
}

第二实体:

public enum Sex
{
        M,
        F
}

public enum FlightClass
{
        First,
        Business,
        Econom,
}

public enum TicketType
{
        OneWay,
        TwoWay,
}

public class Passenger
{
        [Key]
        public string Passport { get; set; }
        public string flightNumber { get; set; }

        [ForeignKey("flightNumber")]
        public virtual Flight flight { get; set; }      

        public string FirstName { get; set; }
        public string SecondName { get; set; }
        public string Nationality { get; set; }       
        public DateTime DateOfbirthday { get; set; }
        public Sex SexOfPassanger { get; set; }
        public FlightClass ClassForPassanger { get; set; }
        public TicketType TypeOfTicket { get; set; }
}

然后我创建了一个DbContext

class FlightsDatabase : DbContext
{
    public DbSet<Flight> Flights { get; set; }
    public DbSet<Flight> FlightsArchive { get; set; }

    public DbSet<Passenger> Passengers { get; set; }
}

当我尝试使用此代码时:

using (FlightsDatabase flights = new FlightsDatabase())
{
    foreach (Flight flight in flights.Flights)
    {
        if (Math.Abs((flight.Departure - DateTime.Now).Days) <= 1)
        {
            timeCame(flight, null);
        }

        if (flight.Departure < DateTime.Now)
        {
            flightsToClean.Add(flight);
        }
    }

    moveOldFlights(flightsToClean, null);
}

我得到这个错误

不支持每种类型多个对象集。对象集“ Flights”和“ FlightsArchive”都可以包含“ Project_Airline_Info.Models.Flight”类型的实例。

所以我的问题是如何在DbContext类中创建具有相同泛型的2个DBset。

戴维

简短的答案是您无法执行此操作。考虑以下代码行:

var flight = context.Set<Flight>().Where(f => f.FlightNumber == "123");

它如何知道要使用哪个集合来获取数据?

可能最简单的解决方法是继承Flight该类并将其用于您的其他类DbSet

public class ArchiveFlight : Flight
{
}

和您的上下文:

public class FlightsDatabase :DbContext
{
    public DbSet<Flight> Flights { get; set; }
    public DbSet<ArchiveFlight> FlightsArchive { get; set; }
    public DbSet<Passanger> Passengers { get; set; }
}

这样做的好处是,您现在可以将属性添加到已存档的排期中,例如存档日期:

public class ArchiveFlight : Flight
{
    public DateTime DateArchived { get; set; }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

首先在EF代码中进行悲观锁定

来自分类Dev

首先在Entity Framework代码中链接子表

来自分类Dev

首先在NodeUnit中运行init-单独的文件

来自分类Dev

如何首先在代码中创建集群键

来自分类Dev

如何首先在实体框架代码中为几个表播种标识种子值

来自分类Dev

如何检测哪个并行进程首先在Linux中结束?

来自分类Dev

如何首先在代码中获得具有外键关系的子实体中的父实体属性?

来自分类Dev

如何在不首先在Ruby中实例化的情况下获取所有子类的列表

来自分类Dev

首先在Entity Framework 7代码中添加/插入包含复杂类型的新条目

来自分类Dev

如何首先在Firebase中发送电子邮件验证,然后创建帐户?

来自分类Dev

首先在EF代码中删除列

来自分类Dev

首先在哪里可以找到Entity Framework 4.0代码中的.csdl,.ssdl和.msl文件?

来自分类Dev

首先在Entity Framework代码中链接子表

来自分类Dev

如何首先在EF代码中建立模型与枚举之间的多对多关系?

来自分类Dev

首先在路由表中插入忽略的路由

来自分类Dev

如何首先在代码中获得具有外键关系的子实体中的父实体属性?

来自分类Dev

首先在同一张表中启用Entity Framework 5代码中的多对多

来自分类Dev

EF例外,如何首先在C#和实体框架代码中为地址建模

来自分类Dev

如何首先在ASP.NET MVC中将Identity与Entity Framework数据库一起使用

来自分类Dev

首先在设备上的iOS 9中与NSURLConnection连接

来自分类Dev

如何首先在实体框架6代码中创建可为空的一对多关系

来自分类Dev

首先在mysqli中显示较新的数据

来自分类Dev

如何首先在代码中使用迁移添加计算列?

来自分类Dev

如何使用VBA附加所有工作表但首先在电子邮件中

来自分类Dev

如何首先在实体框架代码中的 linq 中使用可为空列表?

来自分类Dev

如何首先在代码中定义两个实体之间的多对多和一对多关系?

来自分类Dev

替换所有捕获的组,但首先在 sed 中

来自分类Dev

c# - 如何通过实体框架代码的流畅API首先在c#中更改表名?

来自分类Dev

如何首先在 UI 中显示 JSON 对象中的最后一个属性

Related 相关文章

  1. 1

    首先在EF代码中进行悲观锁定

  2. 2

    首先在Entity Framework代码中链接子表

  3. 3

    首先在NodeUnit中运行init-单独的文件

  4. 4

    如何首先在代码中创建集群键

  5. 5

    如何首先在实体框架代码中为几个表播种标识种子值

  6. 6

    如何检测哪个并行进程首先在Linux中结束?

  7. 7

    如何首先在代码中获得具有外键关系的子实体中的父实体属性?

  8. 8

    如何在不首先在Ruby中实例化的情况下获取所有子类的列表

  9. 9

    首先在Entity Framework 7代码中添加/插入包含复杂类型的新条目

  10. 10

    如何首先在Firebase中发送电子邮件验证,然后创建帐户?

  11. 11

    首先在EF代码中删除列

  12. 12

    首先在哪里可以找到Entity Framework 4.0代码中的.csdl,.ssdl和.msl文件?

  13. 13

    首先在Entity Framework代码中链接子表

  14. 14

    如何首先在EF代码中建立模型与枚举之间的多对多关系?

  15. 15

    首先在路由表中插入忽略的路由

  16. 16

    如何首先在代码中获得具有外键关系的子实体中的父实体属性?

  17. 17

    首先在同一张表中启用Entity Framework 5代码中的多对多

  18. 18

    EF例外,如何首先在C#和实体框架代码中为地址建模

  19. 19

    如何首先在ASP.NET MVC中将Identity与Entity Framework数据库一起使用

  20. 20

    首先在设备上的iOS 9中与NSURLConnection连接

  21. 21

    如何首先在实体框架6代码中创建可为空的一对多关系

  22. 22

    首先在mysqli中显示较新的数据

  23. 23

    如何首先在代码中使用迁移添加计算列?

  24. 24

    如何使用VBA附加所有工作表但首先在电子邮件中

  25. 25

    如何首先在实体框架代码中的 linq 中使用可为空列表?

  26. 26

    如何首先在代码中定义两个实体之间的多对多和一对多关系?

  27. 27

    替换所有捕获的组,但首先在 sed 中

  28. 28

    c# - 如何通过实体框架代码的流畅API首先在c#中更改表名?

  29. 29

    如何首先在 UI 中显示 JSON 对象中的最后一个属性

热门标签

归档