用于从数据库返回数据的通用类型

时间:2013-03-29 19:52:20

标签: c# database design-patterns

我想编写一个函数,它应该将SQL查询作为参数并将结果作为数据提供。 所以,我希望这个函数能够给出通用结构。 可能是退回DataTableSqlDataReader的最佳方式? 然后从中提取数据并将其放入具有特殊类型的对象(不同类型的模型)?

可能存在一些模式吗?

3 个答案:

答案 0 :(得分:2)

您可以将值直接返回给对象。但是你仍然需要将它们最终映射到某些东西。

通常对于这种“通用”用法,我认为所有内容都是作为字符串传输的。 JSON如何在任何地方被串行化为某种字符串,直到它最终被用作其他地方。

无论您使用DataTable还是其他东西,它都无关紧要,因为它最终会完全依赖于您将数据转化为有用的东西。

如果您想查看有关该方法的更多信息,可以查看http://en.wikipedia.org/wiki/NoSQL页面。

Martin Fowler在今年早些时候发表了关于无架构和NoSql的演讲,你可能会觉得很有趣。 http://www.youtube.com/watch?v=8kotnF6hfd8

我会在这里回应其他一些答案,但很可能主张不做“通用”或“普遍”的事情。只需先做一些工作,使系统符合您的想要做的并根据需要进行更改。

答案 1 :(得分:1)

听起来你刚开始。您可能想要考虑像Entity Framework Code First或NHibernate这样的ORM,或者有太多要列出的MicroORM,而不是仅仅针对db运行裸SQL。

我发现EF Code First对初学者来说非常棒。

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

ORM允许您定义映射到数据库中表的类,并明确请求这些对象的列表(解决返回的问题)。

答案 2 :(得分:0)

您可以使用c#dynamic作为返回类型。我建议使用Dapper作为ORM,它快速且易于使用,并且具有从查询返回动态的功能,请参阅“执行查询并将其映射到动态对象列表”部分。