当属性未映射到视图模型时,MVC2 Poco更新

时间:2011-01-20 12:31:18

标签: asp.net-mvc-2 viewmodel poco

我在以下场景中处理了一些处理我的存储库更新的意见或最佳实践:

我正在使用带有POCO tt模板的EF 4,它可以创建漂亮干净的clr对象。 例如,假设我有一个POCO对象名称Customer和一个名为CustomerViewModel的ViewModel。 CustomerViewModel具有Customer对象的公共属性,该对象使用POCO Customer对象填充。该视图引用CustomerViewModel上的Customer对象。到现在为止还挺好。一切都按预期显示。

当需要更新时,会传回CustomerViewModel,并且只会填充绑定到视图的属性,这是公平的。

我现在拥有的是一个POCO对象,它缺少通过EF数据上下文更新所需的一些属性值。例如,由于我没有在视图中显示ID,因此它没有被水合回到视图模型的Customer属性中。这并不奇怪,但我想知道处理这种情况的最佳方法是什么。

所以这是一个问题: 将我没有显示的属性映射到隐藏字段会不会更好,以便我在回发上有完整的POCO对象,可以更新到存储库? (我想在这里有针向客户端发送数据的针头)

或者我应该在更新之前读取客户(假设我有ID),然后从我的视图模型对象更新属性。 (这是针对数据库读取的吗?)。

或者是另一个我可能完全失踪的人。

我意识到可能没有一个正确的答案,但我很想知道其他人如何处理这种情况。

由于

1 个答案:

答案 0 :(得分:0)

我将在这里回答我自己的问题......也许这是一个愚蠢的问题,但写出来的行为使答案更明显..

填充隐藏字段的第一个选择是一个坏主意,原因太多了!!所以我想我必须在帖子后面阅读客户对象并打电话。

TryUpdateModel(customer, "Customer");

客户是新读取的客户,“客户”是视图模型上的属性名称。

这似乎导致了比传统ASP更多的数据访问,在传统的ASP中,对象可能被(正确或错误地)推入Session!

有人想要添加他们的2c吗?