我有一个实体:
public class Foo
{
public virtual int Id;
public virtual IEnumberable<string> Bars;
}
及其映射:
public class FooMapping : ClassMap<Foo>
{
public FooMapping()
{
Table("foo_table_in_database");
Id(x => x.Id, "Id");
HasMany(x => x.Bars)
.AsList()
.Table("bars_table_in_db")
.Element("BarId", m =>
{
m.Type<string>();
});
}
}
在预期结果的实体内部返回了一个异常:(
base = {“无法初始化集合:[Loya.Services.CouponsWeb.Promotion.LoyCouponCustomerGroups#2] [SQL:SELECT loycouponc0_.Promotion_id as Promotion3_0_,loycouponc0_.LoyCustomerGroupId as LoyCusto1_0_,loycouponc0_.Index as Index0_来自loy_promotion__cu ...
数据库表:
foo_table :* Id,其他属性
bar_table :* FooId,* BarId
我的目标是在我的Foo中获得BarId(字符串)列表。 如何正确映射?
答案 0 :(得分:1)
我认为您可能需要指定KeyColumn
。我在我的一个解决方案中做了类似的事情,我会将上面的实体映射如下......
mapping.HasMany(x => x.Bars)
.Schema("Schema")
.Table("FooBars")
.Element("Bar")
.KeyColumn("FooID")
.ForeignKeyConstraintName("FK_FooBar_Foo")
.Not.Inverse()
.Cascade.All()
.Fetch.Select();
这将提供一个名为Schema.FooBars
的表格。它将包含FooID
列(返回Foo
表的外键)和Bar
列,其中包含Bars集合中的值。