如何检查密钥是否在NHibernate中未保存的值

问题描述:

我正在创建一个模型联编程序以与asp.net mvc一起使用。这是我走到这一步:如何检查密钥是否在NHibernate中未保存的值

public class ModelBinder : DefaultModelBinder 
{ 
    protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType) 
    { 
     PersistentClass mapping = DataAccess.Configuration.GetClassMapping(modelType); 
     if(mapping != null) 
     { 
      ValueProviderResult value = bindingContext.ValueProvider.GetValue(mapping.IdentifierProperty.Name); 
      if(value != null) 
      { 
       object keyValue = value.ConvertTo(mapping.Key.Type.ReturnedClass); 
       if(mapping.Key.**** IsUnsavedValue(value) ****) 
       { 
        return DataAccess.Session.Load(modelType, keyValue); 
       } 
      } 
     } 
     return base.CreateModel(controllerContext, bindingContext, modelType); 
    } 
} 

有没有一种方法来检查,如果实体键的值NHibernate的是未保存的?即我将用什么替代**** IsUnsavedValue(value) ****

或者有没有办法在映射文件中获取id的unsaved-value的值。即在下面的****:

<id unsaved-value="****"> 
+0

使用persitent实体视图模型是非常困难的安全。问题:什么是实体密钥? – Paco 2010-02-21 17:02:35

+0

@Paco我同意存在安全问题。我正在使用它来快速生成后端(未向公众公开)。我正在寻找的密钥是在映射文件中映射的值。我会更新排队。 – Geoff 2010-02-21 18:12:45

尝试mapping.Identifier.NullValue

+0

不能相信我错过了。谢谢! – Geoff 2010-03-05 09:41:17