使用 NHibernate 和存储库模式返回不存在的项目的子集合
我在最新的应用程序中使用 NHibernate 和存储库模式。我有 3 个表/实体:具有以下架构的区域、标签和翻译。
Regions
Id
RegionName
Tags
Id
FilePath
FileName
TagContent
Translations
Id
RegionId
TagId
Translation
标签表包含短语(标签)列表,应用程序允许用户为每个标签指定翻译。假设标签表包含 50 个短语(标签)。例如,在用户将其中 10 个标签翻译成西班牙语后,西班牙语的区域实体将具有 10 个翻译标签的子集合。我希望能够在区域类上有一个属性/方法,它返回 40 个未翻译标签的子集合。
我意识到我可以通过检索所有标签并测试该标签是否存在于区域实体的翻译标签子集合中来实现此目的。但这一切都发生在客户端上。我希望它发生在服务器上(让 SQL 完成工作)。
用 NHibernate 可以实现这一点吗?我的映射是什么(我正在使用 FluentNHibernate)
I'm using NHibernate and the repository pattern in my latest app. I have 3 tables/entities: Regions, Tags and Translations with the following schema.
Regions
Id
RegionName
Tags
Id
FilePath
FileName
TagContent
Translations
Id
RegionId
TagId
Translation
The tags table contains a list of phrases (tags), the application allows a user to specify a translation for each tag. So lets say the tags table contains 50 phrases (tags). After the user has translated 10 of those tags into Spanish for instance, then the region entity for Spanish will have a child collection of 10 translated tags. I'd like to be able have a property/method on the region class that returns a child collection of the 40 untranslated tags.
I realise I can achieve this by retrieving all the tags and testing to see if the tag exists or not in the region entity's tranlated tags child collection. But that all happens on the client. I want it to happen on the server (let SQL do the work).
Can this be achieved with NHibernate. What would my mappings be (I'm using FluentNHibernate)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我看来,检索此集合应该是存储库类中的查询,而不是域模型的一部分。您可以使用 HQL、Criteria 或 LINQ 编写查询。如果你说出你的偏好,我相信有人会用一个例子来回复。
In my opinion, retrieving this collection should be a query in a repository class, not part of your domain model. You can write the query using HQL, Criteria, or LINQ. If you state your preference I'm sure someone will reply with an example.