如何处理业务层中的相关对象(asp.net mvc + nhibernate)

时间:2013-06-18 21:22:52

标签: asp.net-mvc nhibernate architecture

我从头开始设计一个应用程序。我这样做是为了让我的编码技能更好,更好。在这个应用程序中,我有两个实体:

  • 国家/地区
  • 城市

添加国家并不难。我在业务层中传递viewmodel,CountryService,将其转换为实体并保留它。

其次我需要添加一个城市。为此,我有一个viewIodel,它有一个CountryId和city的字段。我将viewmodel传递给CityService。我需要做几件事。我需要检索正确的国家/地区实体,将城市数据转换为城市对象,将城市对象添加到国家/地区或将国家/地区添加到城市(通过Nhibernate建议的AddXXX方法)。然后我需要通过城市存储库将城市保存到国家/地区,或者通过国家/地区服务然后在国家/地区存储库中将城市保存到城市。

由于每个方法都有1个函数的思维方式,我有点失去了如何构造这种功能。

1 个答案:

答案 0 :(得分:2)

为什么不将CountryId传递到城市服务方法并使用: -

,而不是在城市服务中检索国家?
var city = new City 
{
  Name = "London",
  country = session.Load<Country>(countryId)
};
session.save(city);

这不会打到数据库并实际返回记录,它只是允许您设置外键。

那说另一种方法是在你的MVC项目中包含Nhibernate并公开会话,而不是完全抽象它。这一思路正在获得动力。