对象 ID 或对象引用

Object id or Object reference

我想知道是在我的 class 中添加对外部对象的引用更好还是只添加它的 ID。我想使用 dapper 或直接 ADO.NET 从数据库创建这些对象。所以我想知道这两种方法之间是否存在性能差异。

例如我有以下对象

Class Object1
{
    int Id {get;set;}
    string Name {get;set;}
    //... etc
}

我还有另一个对象 Object2,它引用了 Object1

Class Object2
{
    int Id {get;set;}
    //is it better to add this
    Object1 object1 {get;set;}
    //or to add just an Id
    int objectId {get;set;}
}

对象 2 可能有对其他对象的其他引用

我会坚持对对象的引用,因为它会减少使用对象关系映射器时必须编写的访问代码量。比如从 ID 中检索对象,以及减少进行不必要的重复访问的可能性。

但是,如果您在内存中存储了大量这些对象,并且您并不总是需要访问对象引用,则只保留 ID 可能更有效。

这是一种平衡行为,但在大多数情况下,对象引用不会影响您。我需要有关用例的更多信息。

首先,在 .NET framework 中,无论您使用什么类型,都派生自父类型 System.Object。因此,无论您使用 int, string, double 还是任何其他 type,都源自 System.Object。因此,无论哪种情况,无论对象是否为 primitive,它都是对对象的引用。

现在,从 clean code 的角度来看,只要可以将数据组合在一起,就应该编写单独的对象。如果您发现有可能合并相同类型的数据,请继续这样做,因为这会提高代码的可读性。很多时候,您会看到一个 class 有很多数据成员,您的逻辑能力是将它们组合起来并从中提取 classes。