c# - 保留动态 "info"对象的最佳方法是什么,C#/.Net MVC/SQL Server 2008?

标签 c# sql asp.net-mvc

这听起来像是白​​日梦,我想知道这是否可能。我希望能够获取一个名为 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/

相关文章:

c# - 获取二叉树中节点索引的最简单方法 C#

sql - 从内部返回值存在没有连接的子查询

html - MVC 4 : How to convert string into IView?

.net - Windows 身份验证提示两次

c# - 如何查看 IQueryable 表达式的参数

c# - 我是否需要为引用主行的每一行调用 InsertOnSubmit?

java - 你能在一个 SQL 语句中返回多个 COUNTs 吗?

mysql - 时间相关字段的数据库设计

c# - ASP.NET MVC 返回不同的 View

c# - 如何按属性对列表进行排序并对 HTML Razor 中的元素进行分组?