繁体   English   中英

Linq-To-SQL表类设计

[英]Linq-To-SQL Table Class Design

我正在将Linq-To-SQL用于约75个表的项目。 我们必须保留要下拉的整个表的缓存,因为所有实体都是相互关联的,并且按需拉动它们花费的时间太长。 因此,要跟踪所有这些表中的所有这些实体,我们有一个类负责维护内存中的表引用。 对于75个表引用中的每一个,此Cache对象均具有不同的属性,并且每个引用均按需缓存其表。 例如:

private EntityTableReference _reference;
public EntityTableReference EntityTableReference
{
    get
    {
                                            // Caches all entities from the table
        return _reference ?? (_reference = new EntityTableReference(this));
    }
}

现在,我已经看到很多指南说这确实违反了面向对象的原则。 Cache对象不执行任何操作,它只是提供了一个通用对象来传递,因此我们可以在函数调用中发送对Cache对象的单个引用,而不是对该函数需要访问的每个表的引用。 这对我们来说一直很好,而且在可维护性,可读性,速度等方面,我也看不到任何缺点。

对这种设计决策是否有任何批评? 这是因为我们已经评估了优点和缺点是违反规则是可行的情况,还是我在这里遗漏了一些东西并陷入了困境?

我可以看到的一个问题是对并发的支持。 如果许多进程/线程正在访问该对象,则读/写操作可能最终成为瓶颈。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM