のうちの特定のデータをつかむデータベース
私のデータベース設計は、このようなものです:私はhotelchainidを持ってホテル、hotelidを持っている建物、持って床を持っています建築物、フロアイドがある部屋。私は、データベースから
Databasehandler.cs方法を特定のホテルからすべての部屋をつかむしようとしている
:
public static List<Room> GetAllRoomsByHotel(string hotelname)
{
HotelDbContext context = new HotelDbContext();
var hotel = context.Hotels.Where(h => h.Name == hotelname).Single();
var buildings = context.Buildings.Where(b => b.Hotel.HotelID == hotel.HotelID).ToList();
var floors = context.Floors.Where(f => f.Building.BuildingID == buildings.BuildingID).ToList();
var rooms = context.Rooms.Where(r => r.Floor.FloorID == floors.FloorID).ToList();
return rooms;
}
私はリストに見つかったオブジェクトを追加し、ループを考えていましたそのリストを介してIDを取得し、その後それらを比較するが、私はそれを達成する方法とそれがうまくいくかどうかわからない。
ありがとうございました!
これはまさにナビゲーションプロパティの目的です。 ( 'Hotel.Buildings'など)あなたはそれらを持っていますか?ご不明な点がございましたら、あなたのクラスモデル(の必須部分)を示してください。 –
@GertArnold私はナビゲーションプロパティは持っていませんが、これまでに聞いたことがあります。これらのプロパティを作成すると、このタイプのロジックを簡単に管理できますか?これは私のモデルの様子です。http://pastebin.com/1iHtV8Eu(本質的な部分) – josephzigler
まあ、あなたは子から親へのナビゲーションプロパティを持っています( 'Building.Hotel'など)。親クラスのナビゲーションプロパティ( 'Hotel'などの' public virtual ICollection Buildings {get; set;})もクラスに追加するだけで、親子ナビゲーションプロパティを作成することができます。 EFは命名規則によってすべてを解決できるようです。 –