我从头开始设计一个应用程序。我这样做是为了让我的编码技能更好,更好。在这个应用程序中,我有两个实体:
添加国家并不难。我在业务层中传递viewmodel,CountryService,将其转换为实体并保留它。
其次我需要添加一个城市。为此,我有一个viewIodel,它有一个CountryId和city的字段。我将viewmodel传递给CityService。我需要做几件事。我需要检索正确的国家/地区实体,将城市数据转换为城市对象,将城市对象添加到国家/地区或将国家/地区添加到城市(通过Nhibernate建议的AddXXX方法)。然后我需要通过城市存储库将城市保存到国家/地区,或者通过国家/地区服务然后在国家/地区存储库中将城市保存到城市。
由于每个方法都有1个函数的思维方式,我有点失去了如何构造这种功能。
答案 0 :(得分:2)
为什么不将CountryId
传递到城市服务方法并使用: -
var city = new City
{
Name = "London",
country = session.Load<Country>(countryId)
};
session.save(city);
这不会打到数据库并实际返回记录,它只是允许您设置外键。
那说另一种方法是在你的MVC项目中包含Nhibernate并公开会话,而不是完全抽象它。这一思路正在获得动力。