2012-01-12 43 views
1

如果我有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; } 
} 

那是正確的,我還有什麼我需要的嗎?

我整天都試過這個ASP.NET tutorial,但它太簡單了,不能理解和表達我的概念,因爲我對C#語法或.NET不太好。

回答

0

看起來不錯,你會做什麼。在一天結束時,您將使用一些數據庫,從數據庫的角度來看,它似乎是完美的結構。前進。

0

如果我是你,我會使用NoSQL數據庫,如MongoDB。

它不使用但它使用收集這是相互類似的。

使用收集的好處是它可以包含陣列或

另一個JSON對象JSON對象的內部。

它甚至可以包含JavaScript函數和數組。

也有許多不同的房間可以有不同類型的密鑰和值,因爲

MongoDB是無模式!

例: 「建築材料」

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

通過這種設計,可以完成你需要的MongoDB什麼。

相關問題