gpt4 book ai didi

fluent-nhibernate - Fluent NHibnernate HasManyToMany with Index

转载 作者:行者123 更新时间:2023-12-04 07:09:08 29 4
gpt4 key购买 nike

我正在尝试使用 Fluent NHibnernate 映射多对多集合。我的模型类具有此属性:

public virtual IList<Resource> Screenshots
{
get { return _screenshots; }
protected set { _screenshots = value; }
}

我的流畅映射是:
HasManyToMany(x => x.Screenshots)
.AsList(x => x.WithColumn("Index"))
.Cascade.AllDeleteOrphan();

当我运行我的应用程序时,我收到以下异常消息:

The element 'list' in namespace 'urn:nhibernate-mapping-2.2' has invalid child element 'many-to-many' in namespace 'urn:nhibernate-mapping-2.2'. List of possible elements expected: 'index, list-index' in namespace 'urn:nhibernate-mapping-2.2'.



应该有办法做到这一点。有谁知道我做错了什么?

最佳答案

当前的 FluentNHibernate 语法如下:

HasManyToMany(x => x.Screenshots)
.AsList(i => i.Column("`Index`"));

索引列默认为索引,但这是 SQL Server(可能还有其他数据库)上的保留字,因此您必须用反引号引用它。

另外,我建议不要在这种关系上设置级联。考虑以下代码:
x.Screenshots.Remove(s);
session.SaveOrUpdate(x);

即使没有指定级联,NHibernate 也会正确地从链接表中删除行。但是,如果您指定 AllDeleteOrphan,则 NHibernate 将从链接表中删除该行并同时删除 Resource s .我怀疑这是您在多对多关系中想要的行为。

关于fluent-nhibernate - Fluent NHibnernate HasManyToMany with Index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/646138/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com