2012-01-12 7 views
1

Iのような階層構造を持つ4つのテーブルがある場合:EFを使用して階層関係テーブルを使用してモデルを設計するにはどうすればよいですか?

  1. ビル(建物多くの床1F、2F、3Fを有する..) - レベル1
  2. をフロア(床があまりにも多くの部屋を持っている101。 、201、301 ...) - レベル2
  3. (部屋があまりにも多くの設備を持っているPC、部屋クーラー...) - レベル3
  4. 快適 - ここではレベル4

私のモデルのコンセプト:。

建物モデル

public class Building 
{ 
    [Key] 
    public string BuildingId { get; set; } 
    public string BuildingName { get; set; } 
    public virtual ICollection<Floor> floors { get; set; }  
} 

フロアモデル

public class Floor 
{ 
    [Key] 
    public string BuildingId { get; set; } 
    [Key]   
    public string FloorId { get; set; } 
    public virtual Building Building { get; set; } 
    public virtual ICollection<Room> rooms { get; set; } 
} 

ルームモデル

public class Room 
{ 
    [Key]   
    public string BuildingId { get; set; } 
    [Key] 
    public string FloorId { get; set; } 
    [Key] 
    public string RoomId { get; set; } 
    public virtual Building Building { get; set; } 
    public virtual Floor Floor { get; set; } 
    public virtual ICollection<Amenity> amenities { get; set; } 
} 

アメニティモデル

public class Amenity 
{ 
    [Key] 
    public string AmenityId { get; set; } 
    [ForeignKey("Builiding")] 
    public string BuildingID{ get; set; } 
    [ForeignKey("Floor")] 
    public string FloorID{ get; set; } 
    [ForeignKey("Room")] 
    public string RoomID{ get; set; } 
} 

は正しいと私ですもっと必要なものは何か?

私は一日中これを試しましたが、C#の構文や.NETでうまくいかないため、私のコンセプトを理解して表現するのは簡単すぎます。

答えて

0

他には何をしているのでしょうか。一日の終わりにはデータベースを使用しており、データベースの視点からは完璧な構造に見えます。先に行く。

0

私があなたの場合は、MongoDBなどのNoSQLデータベースを使用します。

しかし、それは互いに同じであるコレクションを使用します。

コレクションを使用することの利点は、それが配列やJSONオブジェクトの内部

別のJSONオブジェクトを含むことができるです。

JavaScript関数と配列を含むこともできます。

のMongoDBはスキーマレスなので

また、多くの異なった客室には、キーと値の種類を持つことができます!

例:コレクション "建物" この設計により、

{ 
    name: 'buildingName', 
    floor: [ 
    '1': [ 
     'room1': { 
     'amenity': [ 'door', 'toilet', 'bed', 'window' ] 
     }, 
     // ... 
    ], 
    // ... 
    ], // ... 
} 

は、あなたがMongoDBのに必要なものを達成することができます。

関連する問題