我有这样的课程:
public class Link
{
public virtual long Id { get; set; }
public virtual string IdentifierA { get; set; }
public virtual string IdentifierB { get; set; }
}
和这样的映射:
public class LinkMap : ClassMap<Link>
{
public LinkMap()
{
Id(x => x.Id);
Map(x => x.IdentifierA);
Map(x => x.IdentifierB);
}
}
我想只存储链接,A,数据库中没有链接B,这样:
((A.IdentifierA == B.IndentifierA && A.IdentifierB == B.IdentifierB) || (A.IdentifierA == B.IndentifierB && A.IdentifierB == B.IdentifierA))
我认为两个给定标识符之间的任何两个链接都是同一个链接,只想存储其中一个。
我可以用Fluent NHibernate设置吗?如果是,怎么样?
答案 0 :(得分:1)
您可以定义数据库唯一约束
Map(x => x.IdentifierA).UniqueKey("Identifier_key");
Map(x => x.IdentifierB).UniqueKey("Identifier_key");
但在你的场景中,我认为在一个地方更好地处理代码。选择是否存在具有指定条件的实体并返回该实体而不是保存新实体。