实体框架 - 引用刚刚设置的对象属性

时间:2016-01-09 20:13:14

标签: entity-framework

假设我正在填充对象的属性,我需要将其中一个属性传递给另一个方法,是否可以从新对象引用属性,或者我应该首先设置一个单独的变量并使用它?有一种方式比另一种更好吗?请记住,我没有致电SaveChanges()

Method #1 (use property from new object)
=================================================
newObject.LegacyId = oldObject.Id;
newObject.NewId = GetNewIdFromLegacyId(newObject.LegacyId);


Method #2 (set separate variable)
=================================================
int legacyId = oldObject.Id;
newObject.LegacyId = legacyId;
newObject.NewId = GetNewIdFromLegacyId(legacyId);

1 个答案:

答案 0 :(得分:0)

我必须假设两种方法都是等价的。

唯一能让事情变得不同的是,当newObject.LegacyId的getter或setter中有更多代码而不仅仅是存储/返回一个成员变量时,你通过它返回一个不同于set的值值。这将是非常不敏感和意外的。 (因此,你实际上不太可能这样做。)

因此,您更喜欢哪种方法。我个人认为我可能更喜欢第三种方法:

int legacyId = oldObject.Id;
int newId = GetNewIdFromLegacyId(legacyId);

newObject.LegacyId = legacyId;
newObject.NewId = newId;

这是责任的微观隔离:获取Id值和对象初始化。这似乎是挑剔,但单一责任(SOLID的S)是最重要的设计原则之一,它可以应用于任何级别,以使代码更易于维护。它可能会导致您将代码分成两部分,您可以(单元)单独测试。