【发布时间】:2012-04-09 23:04:03
【问题描述】:
如何使用按代码映射来映射这些实体:
public class Foo
{
public virtual IDictionary<Bar, string> Bars { get; set; }
}
public class Bar
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
我找到了this thread,但它没有映射实体,只有简单类型。我尝试了很多映射,包括自动映射:
Map(x => x.Bars,
m =>
{
m.Key(k => k.NotNullable(true));
m.Cascade(Cascade.All);
},
但是大部分都会抛出这两个错误:
- 外键 (Bars [idx])) 的列数必须与引用的主键 (Bars [FooId, idx]) 的列数相同。
- FoosToStrings 表中的关联引用了一个未映射的类:System.String。
任何帮助将不胜感激。谢谢。 :)
【问题讨论】:
-
这转化为 index-many-to-any 映射,我认为这在 FluentNHibernate 中存在一些问题。请使用解决方法查看此相关问题。 stackoverflow.com/questions/8542298/….
-
我没有使用 Fluent。我正在使用代码映射。
-
道歉。需要更仔细地阅读问题。
-
无需道歉。发生。 :)
标签: nhibernate mapping-by-code