排除插入列

时间:2011-03-31 20:41:31

标签: fluent-nhibernate nhibernate-mapping

如果objects属性为null或其他特定值,是否有任何方法可以在Fluent NHibernate中指定在插入记录时省略列?巧合的是,我想省略的专栏是我的映射中的参考。这是我的情景:

public class OrderLineMap : ClassMap<OrderLine>
{
    public OrderLineMap()
    {
        Table("ORDER_LINE");
        Id(x => x.Id, "ORDER_LINE_ID");

        //USER_ID is a GUID.  Column default in DB is Guid.Empty
        References(x => x.User, "USER_ID").Cascade.SaveUpdate();
    }
}

我有一个OrderLine,它引用了一个User,但是这个引用不一定存在于我们创建订单时。它可以在以后的日期和时间更新。由于此处存在外键关系,因此GUID.Empty的列默认值将处理插入而不指定此列。 “用户”表中还有一个“空”用户。

目前,我在数据库中找到了这个“空”用户,并将我的OrderLine对象的User引用设置为此实例。这种方式对我来说似乎有点笨拙,我正在寻找一种更好的方法来做到这一点。我的数据库中有几个这样的关系。

1 个答案:

答案 0 :(得分:1)

如果ORDER_LINE表的USER_ID列不允许空值,那么您可能会遇到当前设置。如果它允许空值,那么你应该将User属性的类型设置为Guid?并确保在保存OrderLine类之前将其设置为null。这样,在数据库中将列值设置为null,并且在Users表中不需要“Empty”行来强制执行引用完整性。