2011-03-31 67 views
0

如果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(); 
    } 
} 

我有了给用户的参考的订单行,但此参考并不一定出现在我们创建订单的时间。它可以在以后的日期和时间更新。由于这里有一个外键关系,所以有一个缺省的GUID.Empty列,它将处理插入而不指定此列。用户表中还有一个“空”用户。

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

回答

1

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

+0

有问题的列不允许有空值,但是这个数据库处于设计阶段,所以我可以把这个提交给我们的数据库设计师,让这个列可以为空。我想我没有意识到,如果在该列上存在外键约束,您可以创建一个可以为空的列。谢谢你的帮助。 – 2011-03-31 23:22:35