我希望能够在数据库中存储/显示有关不同健身房分支的信息。我有关于每个分支的以下信息。
每个分支都有其唯一的地址,每个RoomNumber将具有不同的容量和分支名称。我搜索并尝试了不同的方法,但我无法解决它。下面的代码显示了我所做的。
将存储每个分支记录的分支模型。
public class Branch
{
public int Id { get; set; }
[Required]
[Display(Name = "Branch Name")]
[StringLength(50)]
public List<BranchName> BranchName { get; set; }
[Required]
public int RoomNumber { get; set; }
[Required]
[Range(5, 30)]
public int Capacity { get; set; }
[Required]
[StringLength(50)]
public string Address { get; set; }
}
这是具有RoomNumbers的BranchName模型。
public class BranchName
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public List<int> RoomNumbers { get; set; }
}
以下屏幕截图显示了运行迁移时,BranchName模型未添加房间属性列表。
谢谢
答案 0 :(得分:4)
你没有完全正确地分解分支和房间的想法。根据您的对象,您指示多个分支可以具有相同的地址,因为您将分支名称存储为集合,但只有一个地址。这意味着几个分支也将具有相同的房间信息,这也是不准确的。您还不只是想存储一组房间号码,因为那时您需要做更多的工作来获取关于该房间的详细信息。
这是一个更好的细分:
public class Branch
{
public int Id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public List<Room> Rooms { get; set; }
}
public class Room
{
public int Id { get; set; }
public int BranchId { get; set; }
public int Number { get; set; }
public int Capacity { get; set; }
public bool Available { get; set; }
}
Branch有一个对象,简称为Branch,它具有特定于该分支的所有细节。这同样适用于房间细节。在分支对象内部,您有一组Room对象,用于存储有关所有房间的详细信息。通过向房间对象添加BranchId值,您可以指示房间及其详细信息仅适用于其实际所在的分支,现在可以扩展Room以包含分支的信息,任何想要使用它的人都会发现相关信息。当您获得任何特定分支机构的详细信息时,还可以轻松快速获取所有相关房间。
答案 1 :(得分:1)
当然,您不能将集合表示为单个列。您尝试建立的设计,与关系数据库逻辑完全不兼容。在您的案例中,似乎有两个实体Room
和Branch
就足够了。
public class Branch
{
public int Id { get; set; }
[Required]
[Display(Name = "Branch Name")]
[StringLength(50)]
public string Name { get; set; }
[Required]
[StringLength(50)]
public string Address { get; set; }
public List<Room> Rooms { get; set; }
}
public class Room
{
public int Id { get; set; }
[Required]
public int RoomNumber { get; set; }
[Required]
[Range(5, 30)]
public int Capacity { get; set; }
public int BranchId { get; set; }
public Branch Branch { get; set; }
}
每Branch
包含Name
,Address
每间会议室包含RoomNumber
,Capacity
和BrandId
,其中包含Branchs
表格