asp.net – 从数据库加载对象列表以实例化单个对象的有效方法
我的情况
我有一个包含一些列表的c#对象.其中一个列表例如是标签列表,它是c#“SystemTag”对象的列表.我想以最有效的方式实例化这个对象. 在我的数据库结构中,我有以下表格: > dbObject – 包含有关c#对象的一些基本信息的表 (我还有其他几种类似的数据) 这就是我现在这样做的方式…… >使用ID从数据库中检索我的对象 这实在是效率低下,我们对数据库进行了很多调用.这特别给出了问题,因为我有4种类型的列表. 我试过了什么? 我不是很擅长SQL,但我尝试了以下查询: SELECT * FROM dbObject p LEFT JOIN dbTagConnection c on p.Id= c.PointId LEFT JOIN dbTags t on c.TagId = t.dbTagId WHERE .... 但是,这会像标记连接那样检索多个对象 – 所以我不认为连接是一种很好的方法. 其他信息…… >使用.NET Framework 4.0 … 那么 – 如何尽可能高效地解决这个问题呢? :-) 谢谢! 解决方法
乍一看,我不认为你当前的工作方式是“效率低下”(提供的信息).我会替换代码:
SELECT * FROM dbObject p LEFT JOIN dbTagConnection c on p.Id= c.PointId LEFT JOIN dbTags t on c.TagId = t.dbTagId WHERE ... 通过两次调用DALs方法,首先检索对象主数据(1),然后再检索一个标记相关的数据(2),以便工厂可以填充对象的标签列表: (1) SELECT * FROM dbObject WHERE Id=@objectId (2) SELECT t.* FROM dbTags t INNER JOIN dbTag Connection c ON c.TagId = t.dbTagId INNER JOIN dbObject p ON p.Id = c.PointId WHERE p.Id=@objectId 如果您有许多对象并且数据量只是少数(意味着您不会管理大量数据),那么我会寻找基于ORM的解决方案作为实体框架. 我(仍)觉得在DAO中编写SQL查询以控制所有发送到数据库服务器的查询都很舒服,但最后是因为在我们的情况下需要.我没有看到任何不方便查询数据库以恢复,首先,对象数据(SELECT * FROM dbObject WHERE ID = @ myId)并填充对象实例,然后再次查询数据库以恢复所有卫星数据您可能需要(在您的情况下为标签). 您可以更加简洁地了解您的方案,以便我们为您的特定方案提供有价值的建议.希望这对你有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET:存储应用程序设置的位置?
- 在Entity Framework中使用存储过程(一):实现存储过程的自
- asp.net-mvc – 如何填充/验证您的ViewModels?
- asp.net – 如何在web.config中读取会话状态信息
- asp.net – 将default.aspx重定向到根虚拟目录
- asp.net-mvc – 具有不确定数量项的动态表单
- asp.net-mvc – 在ASP.NET MVC应用程序中进行分页时,在Tele
- ASP.Net将用户数据存储在验证Cookie中
- asp.net-mvc-3 – 即使关闭了自动完成功能,Firefox也会缓存
- ABP(现代ASP.NET样板开发框架)系列之二、ABP入门教程详解
- asp.net-mvc – 处理MVC中的无效URL
- [ASP.NET][C#]下载文件时中文文件名出现乱码
- asp.net – 多重约束违反.关系“…”的角色“…”
- 如何下载特定版本的ASP.NET MVC 5源代码
- asp.net-mvc-2 – 将模型数据传递给外部javascri
- asp.net-mvc – 使用ASP.NET MVC导出数据到Excel
- asp.net – Telerik RadGrid – 如何默认编辑模式
- asp.net – Panel visible = true没有任何效果
- asp.net – 如何在转发器中每行显示x个项目?
- kendo-ui – Kendo UI Editor – 从编辑器菜单中