我正在尝试使用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();
当我运行我的应用程序时,我收到以下异常消息:
命名空间'urn:nhibernate-mapping-2.2'中的元素'list'在命名空间'urn:nhibernate-mapping-2.2'中具有无效的子元素'many-to-many' . 期望的可能元素列表:名称空间'urn:nhibernate-mapping-2.2'中的'index,list-index' .
应该有办法做到这一点 . 有谁知道我做错了什么?
1 回答
当前的FluentNHibernate语法如下:
索引列默认为索引,但这是SQL Server上的保留字(也可能是其他数据库),因此您必须使用反向标记引用它 .
另外,我建议不要在这种关系上设置级联 . 请考虑以下代码:
即使没有指定级联,NHibernate也会正确删除链接表中的行 . 但是,如果指定AllDeleteOrphan,则NHibernate将从链接表中删除该行,并删除Resource
s
. 我怀疑这是你想要多对多关系的行为 .