Fluent NHibernate 中的地图构成
有 2 个类:产品和图像。
- 该产品只有一张图片。
- 不能存在孤立图像。
这表示 UML 中的组合关系,这意味着:
为 Product.Image 分配一个新图像会导致以下
- 删除旧图像;
- 插入新图像;
- 将新图像链接到产品。
现在我需要将其映射到 RDBMS 表(元代码):
Product (Id primary key, ImageId int references Image(id))
Image(Id primary key, Content)
问题是如何使用 Fluent NHibernate 来完成此操作。
请注意:
productMap.References(x => x.Image).Cascade.All()
不适用 - 它不会删除孤立图像。
此外,NH 不支持多对一、一对一的全部删除孤儿。
我可能需要诸如加入组件之类的东西...
但使用流利的 NH。
更新:FNH 用户组中的 James 建议使用此语法:
WithTable("other table", m =>
{
m.Component(...);
});
但没有运气:NotSupportedException:已过时
它应该在 FNH v1(即将推出)中工作。
There are 2 classes: Product and Image.
- The Product has only one Image.
- No orphan Images can exist.
This represent composition relationship in UML which means:
Assigning Product.Image a newImage results in following
- delete old image;
- insert new image;
- link new image to the product.
Now I need to map it to the RDBMS tables (meta-code):
Product (Id primary key, ImageId int references Image(id))
Image(Id primary key, Content)
The question is HOW to do it using Fluent NHibernate.
PLEASE NOTE:
productMap.References(x => x.Image).Cascade.All()
is not applicable - it DOES NOT delete the orphan image.
Also NH DOES NOT support all-delete-orphan for many-to-one, on-to-one.
I probably need something like join with component...
BUT IN FLUENT NH.
UPDATE: James in FNH user groups suggested this syntax:
WithTable("other table", m =>
{
m.Component(...);
});
But no luck with it: NotSupportedException: Obsolete
It supposed to work in v1 (upcomming) of FNH.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你可以像组件一样映射吗?
使用 Fluent 进行映射: http://wiki.fluentnhibernate.org/show/StandardMappingComponents
NH 文档: http://nhibernate.info/doc/nh/en/ index.html#mapping-declaration-component
You can map like a component ?
Mapping with Fluent : http://wiki.fluentnhibernate.org/show/StandardMappingComponents
NH doc : http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-component