代码之家  ›  专栏  ›  技术社区  ›  Jake

Linq to SQL表类设计

  •  1
  • Jake  · 技术社区  · 14 年前

    我正在为一个包含大约75个表的项目使用LinqToSQL。我们必须保存一个我们下拉的整个表的缓存,因为这些实体都是相互关联的,按需拉取它们需要很长时间。所以,为了从所有这些表中跟踪所有这些实体,我们有一个类负责维护内存中的表引用。对于75个表引用中的每一个,此缓存对象都有不同的属性,并且每个引用根据需要缓存其表。例如:

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

    现在,我看到很多向导说这确实违背了OO的原则。缓存对象没有 不管怎样,它只是提供了一个要传递的公共对象,这样我们就可以在函数调用中发送一个对缓存对象的引用,而不是对函数需要访问的每个表的引用。这对我们来说非常有效,在可维护性、可读性、速度等方面我看不到任何缺点。

    对这种设计决策有什么批评吗?在这种情况下,因为我们已经评估了优缺点而违反规则是可以的,还是我在这里遗漏了一些东西而把自己挖到了一个洞里?

    1 回复  |  直到 14 年前
        1
  •  1
  •   rkg    14 年前

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