这听起来像是白日梦,我想知道这是否可能。我希望能够获取一个名为 info 的 C# 动态对象,并将其保存到数据库中(我目前使用的是 SQL Server 2008 数据库)。
信息对象是动态的,可以具有任意数量的属性:Id、Title、Content、DateExpires、DateAdded、Dateupdated、TypeOf
等...
它的每个实例可以/将包含不同数量的属性,具体取决于实例的用途:博客文章、分类广告、事件等...但是,每个信息对象都会有一组核心属性将共享:Id、MemberId、TypeOf
...
想法是,拥有一个存储所有动态信息对象的中央表,但允许我基于任何属性(某些对象可能不存在)进行查询。
例如,博客文章。他们有:Id, MemberId, DateAdded, Title, Content, TypeOf,
等...一个事件会有:Id, MemberId, Title, Content, TypeOf, DateOf, Recurrance, MinAge、MaxAge、
等...
我想根据任何给定的信息对象属性构建查询。
为什么?灵 active 。如果我能让它正常工作,我就可以在我的网络应用程序中将信息对象用于 future 的案例。如果这是一个非常糟糕的主意,请告诉我(以及为什么)。谢谢!
最佳答案
这是可能的,我见过很多这样构建的系统……但是,由于这种“通用性”,这些系统通常是最难维护的。这种方法本质上没有错。只是要实现它要困难得多,而且在大多数情况下,它最终会实现得很差。
近年来,非关系数据库(如@Marc Gravell 提到的文档数据库)已经迎头 catch ,它们对某些领域非常有用,但您需要确保它适合您的项目。
当您走上构建这个“通用数据库”的道路时,您正在牺牲我们认为理所当然的其他知名技术。例如,关系数据库中的数据库优化是众所周知的,并且有许多工具可以轻松或不费力地与它们很好地配合使用。如果你突然走上不同的道路,你习惯的工具可能无法工作,最终要么构建你自己的工具来弥补不起作用的东西(或购买/选择一些深奥的工具。)
根据项目的规模,明智的做法可能是构建一个或两个您认为会很常见的系统,然后尝试看看它们是否像您想象的那样普遍。
关于c# - 保留动态 "info"对象的最佳方法是什么,C#/.Net MVC/SQL Server 2008?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7160218/