2009-11-18 15 views
1

我在我的數據庫中有許多共享常見列的表格:修改者,修改日期等。不是每個表都有這些列。我們正在使用LINQ to Enties來生成asp.net mvc:如何在使用LINQ to Entities時爲模型創建自定義綁定

我想創建一個自定義綁定器類,可以處理這些字段的自動綁定。有沒有辦法做到這一點,而沒有爲每個實體類定製綁定類?

這裏是我的代碼:

在的global.asax.cs,的Application_Start():

ModelBinders.Binders.Add(typeof(Foo),new FooBinder()); 

然後在FooBinder.cs:

public override Object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
{ 
    var obj = (Foo)base.BindModel(controllerContext, bindingContext); 
    var user = controllerContext.HttpContext.User.Identity; 
    obj.modified_by = user.Name; 
    obj.modified_date = DateTime.Now; 
    return obj; 
} 

有沒有一種辦法推廣這個,所以它可以處理多種類型?

回答

1

我們在存儲庫中執行此操作,而不是在活頁夾中執行此操作。我們有一個與常用字段的界面(修改於)。我們在部分類中實現接口,我們使用T4模板爲我們的實體編碼。

0

您可以使用反射按名稱設置字段,以便您可以對屬性名稱進行foreach。這不是什麼大問題,因爲無論如何,模型聯編程序使用反射本身來獲取屬性。然後,您可以爲每個「常見」類型註冊綁定 - 也可以使用反射,例如通過檢查該實體是否具有所需的所有字段 - 因此即使您添加了新的實體,它也可以工作。

只需讓你的聯編程序調用默認的一個,然後更新字段。