在表中获取空值(实体框架)

时间:2016-05-26 19:03:58

标签: sql entity-framework

我一直在实体框架中处理数据库,但遇到了一些问题。

我有一个像这样的HotelChain模型:

[Key]
public int HotelChainID { get; set; }
public string Name { get; set; }
public List<Hotel> Hotels { get; set; }

和酒店模特:

[Key]
public int HotelID { get; set; }
public string Name { get; set; }
public List<Building> Buildings { get; set; }
public List<Amenities> Amenities { get; set; }

My HotelInitializer类:

        Repository.InsertHotel(new Hotel("Brussels", Repository.GetAllBuildings(), Repository.GetAllAmenities()));
        Repository.InsertHotel(new Hotel("Paris", Repository.GetAllBuildings(), Repository.GetAllAmenities()));
        Repository.InsertHotel(new Hotel("Berlin", Repository.GetAllBuildings(), Repository.GetAllAmenities()));
        Repository.InsertHotel(new Hotel("London", Repository.GetAllBuildings(), Repository.GetAllAmenities()));
        Repository.InsertHotel(new Hotel("Tenerife", Repository.GetAllBuildings(), Repository.GetAllAmenities()));
        Repository.InsertHotel(new Hotel("Amsterdam", Repository.GetAllBuildings(), Repository.GetAllAmenities()));
        Repository.InsertHotelChain(new HotelChain("Company Name", Repository.GetAllHotels()));

问题是数据库中的酒店表中有双重记录,一次是HotelChain_HotelChainID为null,一次是HotelChain_HotelChainD为1。 enter image description here

我想要实现只有1上的Hotelchain ID的记录才会添加到表格中。我怎么能做到这一点?

这些是我的存储库方法:

    public static int InsertHotel(Hotel hotel)
    {
        HotelDbContext context = new HotelDbContext();
        context.Hotels.Add(hotel);
        context.SaveChanges();
        return hotel.HotelID;
    }
    public static List<Hotel> GetAllHotels()
    {
        HotelDbContext context = new HotelDbContext();
        return context.Hotels.ToList();
    }

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

好像您的酒店类缺少对HotelChain的外键引用。在您的初始化程序类中,除非您拥有连锁酒店,否则您无法创建酒店。您应该首先添加外键引用(根据您的业务逻辑 - 您的系统中是否存在不属于链的一部分?)。如果你把它留下来,你仍然可以通过首先建立连锁酒店然后在该连锁店中添加酒店列表来实现您想要做的事情。