Asp.net mvc 4 ASP.NET MVC:需要帮助组织数据结构类吗

Asp.net mvc 4 ASP.NET MVC:需要帮助组织数据结构类吗,asp.net-mvc-4,ef-code-first,Asp.net Mvc 4,Ef Code First,我来自PHP/MySQL的背景,所以我在.NET中遇到的问题可能就是源于此。在发布了一周如何为我们的计算机硬件和软件创建库存跟踪器后,终于有人告诉我,他认为我做错了。问题不是我的代码,而是我的设计。这当然是可能的。我首先尝试在EF代码中实现这一点,而用代码生成数据库的想法对我来说是陌生的。然而,我让数据库正常工作,一切都指向正确的东西。但我无法从数据库中提取我需要的东西 我想做的是创建一个仪表板页面,其中包含硬件类型的类别。所以会有一个PC列表,一个监视器列表,一个打印机列表,等等。最初,我所做

我来自PHP/MySQL的背景,所以我在.NET中遇到的问题可能就是源于此。在发布了一周如何为我们的计算机硬件和软件创建库存跟踪器后,终于有人告诉我,他认为我做错了。问题不是我的代码,而是我的设计。这当然是可能的。我首先尝试在EF代码中实现这一点,而用代码生成数据库的想法对我来说是陌生的。然而,我让数据库正常工作,一切都指向正确的东西。但我无法从数据库中提取我需要的东西

我想做的是创建一个仪表板页面,其中包含硬件类型的类别。所以会有一个PC列表,一个监视器列表,一个打印机列表,等等。最初,我所做的是基于我对MySQL的了解。我创建了一个硬件表(类)和一个硬件类型表(类)。在MySQL中,我要做的是将硬件类型的ID放在硬件表中,以便进行连接。然后我可以通过一个简单的内部连接获得我所有的电脑

.NET似乎有所不同。它希望创建一个中间表——HardwareHardwareTypes,然后连接另外两个表。这似乎很奇怪,但还行。但是当我去获取我所有的电脑时,我似乎无法获得编写查询所需的帮助。所以请看看我的问题和我的课程,让我知道你的想法

查询,返回硬件,而不是硬件类型--如何获取硬件类型?:

硬件类别:

public class Hardware
    {
        public int Id { get; set; }
        public virtual ICollection<DeviceType> Type { get; set; }
        public string AssetTagId { get; set; }
        public virtual ICollection<Manufacturer> Manufacturer { get; set; }
        [Required]
        [StringLength(50)]
        public string ServiceTagId { get; set; }
        [Required]
        [StringLength(50)]
        public string SerialNumber { get; set; }
        [Required]
        [StringLength(75)]
        public string ProductNumber { get; set; }
       // [Required]
        [StringLength(20)]
        public string PurchaseDate { get; set; }
        [StringLength(20)]
        public string WarrantyExpiration { get; set; }
        [Required]
        [StringLength(20)]
        public string WarrantyType { get; set; }
        public virtual ICollection<Location> Location { get; set; }
        public virtual ICollection<HardwareType> HardwareType { get; set; }
        [Required]
        [StringLength(2000)]
        public string Notes { get; set; }
        public string POATag { get; set; }
    }
公共类硬件
{
公共int Id{get;set;}
公共虚拟ICollection类型{get;set;}
公共字符串AssetTagId{get;set;}
公共虚拟ICollection制造商{get;set;}
[必需]
[长度(50)]
公共字符串ServiceTagId{get;set;}
[必需]
[长度(50)]
公共字符串序列号{get;set;}
[必需]
[第75段]
公共字符串ProductNumber{get;set;}
//[必需]
[行政长官(20)]
公共字符串PurchaseDate{get;set;}
[行政长官(20)]
公共字符串保修扩展{get;set;}
[必需]
[行政长官(20)]
公共字符串担保类型{get;set;}
公共虚拟ICollection位置{get;set;}
公共虚拟ICollection硬件类型{get;set;}
[必需]
[秘书长(2000年)]
公共字符串注释{get;set;}
公共字符串POATag{get;set;}
}
硬件类别:

public class HardwareType
    {
        public int Id { get; set; }
        [Required]
        [StringLength(128)]
        public string HType { get; set; }
        public virtual ICollection<Hardware> Hardware { get; set; }
    }
公共类硬件类型
{
公共int Id{get;set;}
[必需]
[第128段]
公共字符串HType{get;set;}
公共虚拟ICollection硬件{get;set;}
}
再次,如果我需要的是更高层次的设计变更,请让我知道。如果我需要其他查询,请告诉我。第三个(中间)表是动态生成的,很难知道如何发布它。我非常感谢所有人的帮助。最后我需要的是一个PC列表。以下是一些样本种子数据:

    ... new Hardware { AssetTagId = "2134", 
Type = device.Where(h => h.DType == "Network Device").ToArray(), 
Manufacturer = manuf.Where(h => h.ManufacturerName == "SonicWall").ToArray(), 
ServiceTagId = "5243", 
SerialNumber = "3456", 
ProductNumber = "2345", 
PurchaseDate = "2012-10-23", 
WarrantyExpiration = "2012-11-12", 
WarrantyType = "NBD", 
Location = loc.Where(h => h.LocationName == "Paradise Lane").ToArray(), 
Notes = "Scrapped",  
HardwareType = htype.Where(h => h.HType == "PC").ToArray()}, ...

 var htype = new List<HardwareType> {
                new HardwareType { HType = "PC" },
                new HardwareType { HType = "Monitor" },
                new HardwareType { HType = "Printer" },
                new HardwareType { HType = "Miscellaneous" }
            };
。。。新硬件{AssetTagId=“2134”,
Type=device.Where(h=>h.DType==“网络设备”).ToArray(),
制造商=制造商,其中(h=>h.ManufacturerName==“SonicWall”).ToArray(),
ServiceTagId=“5243”,
SerialNumber=“3456”,
ProductNumber=“2345”,
PurchaseDate=“2012-10-23”,
保修扩展=“2012-11-12”,
保修类型=“NBD”,
Location=loc.Where(h=>h.LocationName==“天堂巷”).ToArray(),
Notes=“报废”,
HardwareType=htype.Where(h=>h.htype==“PC”).ToArray()}。。。
var htype=新列表{
新的硬件类型{HType=“PC”},
新的硬件类型{HType=“Monitor”},
新的硬件类型{HType=“Printer”},
新的硬件类型{HType=“Miscellaneous”}
};

如果我的种子数据结构错误,请告诉我。谢谢。

首先让我告诉您,在PHP/MySQL中工作的相同数据库设计也可以在这里工作

我将向您建议的最简单的方法是在数据库中创建一个连接表硬件和硬件类型的视图,向数据库模型中添加nwly创建的视图,并从视图而不是表中获取所需的数据

    ... new Hardware { AssetTagId = "2134", 
Type = device.Where(h => h.DType == "Network Device").ToArray(), 
Manufacturer = manuf.Where(h => h.ManufacturerName == "SonicWall").ToArray(), 
ServiceTagId = "5243", 
SerialNumber = "3456", 
ProductNumber = "2345", 
PurchaseDate = "2012-10-23", 
WarrantyExpiration = "2012-11-12", 
WarrantyType = "NBD", 
Location = loc.Where(h => h.LocationName == "Paradise Lane").ToArray(), 
Notes = "Scrapped",  
HardwareType = htype.Where(h => h.HType == "PC").ToArray()}, ...

 var htype = new List<HardwareType> {
                new HardwareType { HType = "PC" },
                new HardwareType { HType = "Monitor" },
                new HardwareType { HType = "Printer" },
                new HardwareType { HType = "Miscellaneous" }
            };