我们有以下域对象: -
public class UserDevice : BaseObject
{
// different properties to hold data
}
public class DeviceRecipient:BaseObject
{
public virtual UserDevice LastAttemptedDevice{get;set;}
}
因此,使用流畅的nhibernate automapper基于此创建的sql模式就像DeviceRecipient的表具有UserDevice的主键作为外键,即UserDevice_Id .
现在,当我们尝试删除UserDevice对象时,它为外键约束提供了一个sql异常 . 我们想做的是: -
-
删除UserDevice对象,因此删除UserDecipient而不删除DeviceRecipient,因为它将在域模型中的其他位置使用 . 我们只想在删除UserDevice时将null设置为DeviceRecipient的UserDevice_Id列 .
-
我们希望使用流畅的nhibernate约定来实现它,因为我们使用Automapping .
任何帮助都会很明显..在此先感谢 . !
1 回答
我可以看到你有单向的多对一关系 . 首先,你必须写下面的覆盖:
其次,如果您有更多具有此行为的地方,您可以将其转换为自动约定 .
EDIT :
来自NHibernate参考
因此,当您设置
not-found="ignore"
SchemaExport / SchemaUpdate时,不会为您创建FK . 因此,如果你有FK,那么你需要删除它或将FK的OnDelete行为设置为Set Null
. 假设您使用的是Microsoft Sql Server: