祝大家新年快乐!我刚刚开始为运行工具招聘业务的客户端建模ASP.NET MVC 5应用程序.部分解决方案涉及构建管理(后端)功能,管理员用户可以通过该功能创建/编辑从特定工具组附加到每个工具的自定义属性或工具元数据.我正在研究的概念是,在运行时,应用程序不应该知道元数据架构将是什么.所以我从这开始: 是的,我知道...... 另一个EAV噩梦!我知道如果数据被正确地规范化,并且创建了相关的索引,那么它应该不会太糟糕.但老实说,我没有看到任何其他选择.例如:
博世无绳电钻
工具组:钻头
品牌:博世(ListItem - 从MetaAttributeListOption
表中预填充)
类型:无绳(listItem - 从MetaAttributeListOption
表中预填充)
Keyless Chuck:是的(布尔)
电压:14.4Volts(正文)
...
现在这些属性将用于3个目的:
在前端显示为"规格"
用于在前端上过滤工具
(可能)用于报告以确定"热门品牌"(例如)
所以我想我为此坚持使用RDBMS(SQL Server).我知道对此采用一种流行的方法是使用一些NoSQL解决方案,但说实话,我没有太多的实践经验来与MSSQL一起使用它.我可以将Values
表组合成一个表,其中每个数据类型值都在它自己的列中,但这将留下很多空值来应对.
如果你能帮助我,我会留下以下问题:
这个模型是否符合我的要求?我不确定我MetaAttributeListOption
是否正确设计了桌子的关系.
这种EAV方法有替代方案吗?
假设我的模型(或其衍生物)是我唯一的选择,我将如何使用Entity Framework 6实现此模型?对于管理后端的ASP视图页面,我想我需要某种HTML Helper来确定要渲染的正确编辑器,然后相应地填充.
我非常感谢StackOverflow社区提供的任何帮助.如果您需要更多信息,请告诉我,如果您认为不合适,请不要关闭此信息,因为我认为我的问题与编程相关.谢谢!
编辑: 我在这个值得我自己积分的200分钟上开始给予奖励...... 100个用于协助/建议我的问题1和2,以及100分的问题3.谢谢