我正在使用具有以下结构的现有数据库。更改数据库架构是最后的手段。
Products
Id
Name
ParentProducts
ParentId
ChildId
我不想要ParentProducts的实体,我对children属性有以下内容(仍需要测试它,但这就是概念)。
<bag name="Children" lazy="true" table="dbo.ParentProducts" cascade="save-update" inverse="true" >
<key column="[ChildId]"></key>
<many-to-many column="[ProductId]" class="Product" />
</bag>
我正在努力的是如何创建父属性?我想做类似下面的事情,但是table不是多对一的有效属性。
<many-to-one name="Parent" column="[ParentId]" table="dbo.ParentRelated" class="Policy" />
我可以创建一个包,只看第一个项目,但这更像是一个黑客。
有什么想法吗? 感谢
答案 0 :(得分:2)
创建包是最简单的解决方案。你可以给它一个干净的界面:
protected virtual ICollection<Product> Parents { get; set; }
public virtual Product Parent
{
get
{
return Parents.SingleOrDefault();
}
set
{
Parents.Clear();
Parents.Add(value);
}
}
有了这个,其余的代码不需要知道DB /映射结构。