2016-05-26 7 views
1

エンティティフレームワークのデータベースで作業していましたが、いくつかの問題が発生しました。テーブル(エンティティフレームワーク)でnull値を取得する

私はこのようなて、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; } 

マイ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())); 

問題は、二重のレコードがあるということですデータベース内の私のホテルのテーブルでは、nullに1泊、 1泊あたりのホテルチェーンIDが1のレコードのみがテーブルに追加されるようにしたいと思います。どうすればこれを達成できますか?

これらは私のリポジトリメソッドです:

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

あなたのホテルクラスのようなものは、Hotelshainへの外部キーの参照がありません。イニシャライザクラスでは、ホテルチェーンが存在しない限り、ホテルを作成することはできません。最初に外部キー参照を追加する必要があります(ビジネスロジックごとに - チェーンに含まれていないホテルがシステム内に存在する可能性がありますか?)。あなたがそれを残しておけば、最初にホテルチェーンを作ってからそのチェーンにホテルのリストを追加することで、やっていることを達成することができます。 – RizJa

+0

@RizJa私のビジネスロジックでは、ホテルチェーンの一部ではないホテルを存在させることはできません。このコードではナル値のリストはもうありません:http://pastebin.com/Wc1W0nWV建物、フロアと一緒にゴマをしなければならない...もし私が正しいなら?お手伝いありがとう! – josephzigler

+0

はい、同じロジックがビルディングとフロアに適用されます。フロアは1つの建物にしか属していないので、そこに外部キー参照も必要です。そして、問題ではありません。あなた自身の質問に答えて、それを解決としてマークするか、答えとして上記のコメントを置くことができ、それを受け入れることができます。 – RizJa

答えて

1

あなたのホテルクラスのようなものは、Hotelshainへの外部キーの参照がありません。イニシャライザクラスでは、ホテルチェーンが存在しない限り、ホテルを作成することはできません。最初に外部キー参照を追加する必要があります(ビジネスロジックごとに - チェーンに含まれていないホテルがシステム内に存在する可能性がありますか?)。あなたがそれを残しておけば、最初にホテルチェーンを作ってからそのチェーンにホテルのリストを追加することで、やっていることを達成することができます。

関連する問題