2010-02-21 108 views
4

我正在創建一個模型聯編程序以與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

回答

2

嘗試mapping.Identifier.NullValue

+0

不能相信我錯過了。謝謝! – Geoff 2010-03-05 09:41:17

相關問題