我的情况
我有包含一些列表的 ac# 对象。例如,这些列表之一是标签列表,它是 c#“SystemTag”对象的列表。我想以最有效的方式实例化这个对象。
在我的数据库结构中,我有以下表格:
- dbObject - 包含有关我的 c# 对象的一些基本信息的表
- dbTags - 所有可用选项卡的列表
- dbTagConnections - 一个包含 2 个字段的列表:TagID 和 ObjectID(确保一个对象可以有多个标签)
(我还有其他几个类似类型的数据)
我现在就是这样做的...
- 使用 ID 从数据库中检索我的对象
- 将 DB 对象发送到“对象工厂”模式,然后意识到我们必须获取标签(和其他列表)。然后它使用我们的 C# 对象的 ID 向 DAL 层发送调用
- DAL 层从数据库中检索数据
- 这些数据被发送到转换为标签的“TagFactory”模式
- 我们回到了对象工厂
这确实效率低下,我们对数据库有很多调用。这尤其会带来问题,因为我有 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
- 使用 LINQ to SQL(BLL 和 DAL 层与 BLL 中的工厂模式从 DAL 对象转换)
...
那么 - 我如何尽可能有效地解决这个问题?:-) 谢谢!