Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 隐藏类是活动记录的事实_.net_Orm_Castle Activerecord - Fatal编程技术网

.net 隐藏类是活动记录的事实

.net 隐藏类是活动记录的事实,.net,orm,castle-activerecord,.net,Orm,Castle Activerecord,我正在使用CastleActiveRecord,但将其包装在我自己的持久层中,因为我想对应用程序代码隐藏这一事实。但是,我的实体都继承自ActiveRecordBase,因此我选择的ORM正在泄漏给应用程序。我特别不喜欢的是大量的方法暴露了我的实体 如何在不继承ActiveRecordBase的情况下使用ActiveRecord 我知道部分抽象会泄漏,因为我的实体用Active ReCordD属性来修饰,但是我不认为这个部分是有意义的。 < P>可以使用构造函数而不是继承——您的业务对象基本上封

我正在使用CastleActiveRecord,但将其包装在我自己的持久层中,因为我想对应用程序代码隐藏这一事实。但是,我的实体都继承自ActiveRecordBase,因此我选择的ORM正在泄漏给应用程序。我特别不喜欢的是大量的方法暴露了我的实体

如何在不继承ActiveRecordBase的情况下使用ActiveRecord


我知道部分抽象会泄漏,因为我的实体用Active ReCordD属性来修饰,但是我不认为这个部分是有意义的。

< P>可以使用构造函数而不是继承——您的业务对象基本上封装了Active ReST对象并将持久性职责委派给它。p> 您可以使用组合而不是继承—您的业务对象基本上包装了活动记录对象,并将持久性职责委托给它

如果你只使用普通的NHibernate,你不必使用decorators等,你只需要把你自己的hbm.xml文件放在一起,这些文件非常简单,有很多工具可以帮助你

请注意,虽然这不能直接回答您的问题,但我还是把它放在那里,因为使用您自己的NHibernate抽象和学习NH是一项伟大的技能,一旦您投入时间,您将永远不会再很好地使用AR,除非这是一个您希望快速推出的小项目

我有自己的自定义NH抽象层,您可以在我的博客上找到一些代码示例等:

虽然这可能有点过头了,但它确实向您展示了对NH的良好理解可以让您在未来做些什么


Guido

如果您只使用普通的NHibernate,那么您不必使用decorators,等等,您只需要汇总您自己的hbm.xml文件,这些文件非常简单,并且有很多工具可以提供帮助

请注意,虽然这不能直接回答您的问题,但我还是把它放在那里,因为使用您自己的NHibernate抽象和学习NH是一项伟大的技能,一旦您投入时间,您将永远不会再很好地使用AR,除非这是一个您希望快速推出的小项目

我有自己的自定义NH抽象层,您可以在我的博客上找到一些代码示例等:

虽然这可能有点过头了,但它确实向您展示了对NH的良好理解可以让您在未来做些什么


Guido

使用Castle ActiveRecord时,实体不必从基类继承。您可以改用ActiveRecordMediator。可能会有所帮助。

使用Castle ActiveRecord时,您的实体不必从基类继承。您可以改用ActiveRecordMediator。也许会有帮助。

所以您建议我为每个模型实体定义另一个仅包含它的实体?这似乎有点麻烦。。。也许我没听明白你想说的话。你能提供一个代码示例吗?@ripper234»你可以这样做,但更简单的实现是只使用一个内部类。所以你建议我为每个模型实体定义一个只包含它的模型实体?这似乎有点麻烦。。。也许我没听明白你想说的话。你能提供一个代码示例吗?@ripper234»你可以这样做,但一个更简单的实现只是使用一个内部类。我确实想使用ActiveRecord和FluentNH来简化问题,我只是不想让它严重泄漏到应用程序中。我确实想使用ActiveRecord和FluentNH来简化问题,我只是不想让它严重泄漏到应用程序中。