我有两个实体类(具有通用接口,便于自动映射),其中一个具有对另一个的通用引用:
public interface IModelClass
{
Guid Id { get; set; }
}
class Order : IModelClass
{
public virtual Guid Id { get; set; }
public virtual ISet<Attachment> Attachments { get; set; }
}
class Attachment : IModelClass
{
public virtual Guid Id { get; set; }
public virtual IModelClass AttachedTo { get; set; }
}
我可以定义通用参考ReferencesAny
:
mapping.ReferencesAny(x => x.AttachedTo)
.EntityTypeColumn("entity_type")
.EntityIdentifierColumn("entity_id")
.IdentityType<Guid>()
.MetaType<string>()
.AddMetaValue<Order>("ORDER")
.Cascade.None();
这很好用,只要我只直接使用附件并且不要尝试从Order
侧面做事。不过,我想要的是映射关系的反向 - 即通常由以下方式处理的内容:
mapping.HasMany(x => x.Attachments)
这样我就可以将附件添加到订单的集合中并让它们持久化,而无需手动完成并设置/保存每个附件(而且我必须开始传递会话以获取提交的附件同一笔交易)。这不起作用 - 它只是正常工作并order_id
在附件表上创建一个列。
有什么方法可以设置此映射以使其“有效”吗?