使用 NHibernate 和存储库模式返回不存在的项目的子集合

发布于 2024-10-06 12:03:11 字数 503 浏览 2 评论 0原文

我在最新的应用程序中使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

醉殇 2024-10-13 12:03:11

在我看来,检索此集合应该是存储库类中的查询,而不是域模型的一部分。您可以使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文