2

我在写一个类库作为DataModel。 DataModel能够处理所有与数据库相关的任务。我使用NHibernate和Fluent NHibernate相同。使用NHibernate创建数据库类库

现在的问题如下:

  1. 我们应该揭露实体(POCO类)。
  2. 将具有内部受保护属性和属性的实体暴露为接口是否好?
  3. 为映射创建的实体可以是WPF MVVM的模型。
  4. 还是应该直接绑定实体?
  5. 如果库返回实体列表作为API返回值,则无法控制。所以任何人都可以在列表中添加或删除。我应该如何控制它。我是否应该创建来自IList的代理,该代理将跟踪它。
  6. 在API中抛出异常是正确的,还是应该返回null?
  7. 在图书馆保持登录状态好吗?

回答

1

我们应该公开实体(POCO类)。

是的,创建包装类使得更多的努力。

将内部保护属性和属性暴露为接口的实体是否好?

是的,安装员和非暴露属性是控制。

为映射创建的实体可以是WPF MVVM的模型。

对于原始类型可以,但引用可以通过接口暴露。

还是应该直接绑定实体?

如果Model是直接使用POCO对象创建的。更新案例更加灵活。如果有取消操作,用户不能更改POCO对象的属性。

如果库返回实体列表作为API返回,则无法控制。所以任何人都可以在列表中添加或删除。我应该如何控制它。我是否应该创建来自IList的代理,该代理将跟踪它。

IEnumerable用于通过接口公开集合。

在API中抛出Exception是否正确或者我应该返回null?

例外情况会让用户知道错误要好得多。但将用户可读的异常封装到NHibernate异常中。

是它的图书馆保持良好记录

记录是很好的功能了解的问题。

+0

谢谢jugal ..... – Deepak 2013-06-06 05:56:31

1

我们应该公开实体(POCO类)。

肯定的,否则什么用的实体的时候没有人使用

是好有一个实体的内部保护财产和财产暴露的接口。

这要看!内部受保护的属性在使用ORM时不成问题,但我优先考虑将内部的东西减少到最低限度,因为我喜欢维护它们自己状态的对象。接口很好

为映射创建的实体可以是WPF MVVM的模型。

当然。不需要再次复制它们。这就是持久性的无知是为什么

或者我们应该直接绑定实体?

更多ofthen不是,用户界面的要求比持久性/ businessrules非常不同的,所以会有专门用于UseCases /浏览次数的ViewModels。然而简单的Dataholders像Order class扔进列表可以直接(例如使用DatabindingFactory,使他们实现INPC)

没有控制,如果库返回实体的名单作为API返回的约束。所以任何人都可以在列表中添加或删除。我应该如何控制它。我是否应该创建来自IList的代理,该代理将跟踪它。

列表只是在内存容器中。用户仍然需要通过API来保存/更新状态。

是不是抛出异常的API中出现的或者我应该返回null

如果返回集合然后空集合远比空好。

但是,例外情况应该鼓起来,最好包裹在自己可手动的例外中。实施NHibernate.Exceptions.ISQLExceptionConverter(例如像NHibernate.Test.ExceptionsTest.MSSQLExceptionConverterExample)并且使用例如 config.DataBaseIntegration(db => db.ExceptionConverter<MyExceptionConverter>())

是它的图书馆

是绝对的好保持记录。记录功能可以调试已部署的应用(流利)如果可能的话,NHibernate已经有很多内置的日志记录了。

+0

感谢Firo,需要协助异常处理????我应该直接抛出异常还是返回空集合。 – Deepak 2013-05-06 05:23:08