2010-02-25 82 views
2

背景

我非常喜欢流利的NHibernate - 它非常棒。我不必编写那些世俗的基于CRUD的SQL存储过程,这很好(不是说这有什么问题)!NHibernate +映射+域模型=过度工程?

我在我们正在处理的应用程序上走了一段路。现在我坐着几十个域对象,每个对象都有一个存储库接口和相应的具体存储库。呼!

但等等 - 这真的能为我节省很多时间吗?感觉它需要更多时间。我不得不编写所有这些99%属性和1%业务逻辑的域对象,然后我必须定义映射。这需要花费与编写存储过程相同的时间。那么使用Fluent NHibernate有什么好处,让我可以直接编写存储过程?

问题

是否有可靠的解决方案在那里产生(在.NET)的“属性包”的域对象,所以我没有给他们写?我可以看到一些好处,只要对象提供了一些可扩展性以根据需要添加额外的业务逻辑。

回答

1

您可以使用Auto mapping生成映射。 NHibernate对于绿地应用非常理想,大多数使用NHibernate的人都会编写他们的域对象并从中生成数据库。你喜欢做相反的事情,你有一个现有的数据库,并希望生成域对象。 NHiberante没有解决这个问题的方法,但是你可以使用MyGeneration,CodeSmith或者一些类似的代码生成工具编写一个小脚本。

1

可能你应该考虑其他方式。在开发过程中,您可以从对象中生成SQL-Schema(FluentNhibernate支持这一点)。这样,您就可以在迭代过程中开发您的领域模型,并且可能会发生许多变化。数据模型可能只是一个附录。

从我的角度来看,写入对象与在模式管理工具中创建表格和添加字段一样简单。事实上,我相信写商业/域对象更快:-)

如果你有一个贫血的领域模型,这可能是因为你的应用程序是年轻的。更多的功能会来:-)