2013-05-15 52 views
0

在我的ASP MVC項目中,無論何時向我的項目添加新表格,都會創建兩個模型。一個在文本模板轉換工具包(文件w/.tt擴展名)下,另一個在一般的Models文件夾(這個似乎想在文件末尾加一個「1」)。覆蓋ASP MVC模型中的部分類字段

enter image description here

每當一個變化是對數據庫進行,似乎所有的.tt文件下的模型,根據當前存在於該表的數據庫中的字段刷新。除此之外的文件是普通的Models文件夾,但保留原樣。因此,我們已將所有模型驗證方法放入這些.cs文件中(文件名末尾帶有「1」)。

但是,在一個實例中,我需要從.tt文件下的模型中刪除字段,以便在其他.cs文件中執行驗證。這是驗證我執行:

private string agentId; 

    //here, AgentId overrrides the field in the BankListAgentId.cs file, 
    //which MUST be commented out. 
    [DisplayName("Agent ID")] 
    public string AgentId 
    { 
     get { return agentId; } 
     set { agentId = this.scrubAgentId(value); } 
    } 

是否有這個.cs文件中指定一種方式,AgentId場這裏(用「1」的文件在名稱末尾)覆蓋AgentId field in the的.cs file found under the .tt`文件?

回答

0

據我所知不能做到。但是你可以做的幾個竅門。

  1. 將您的財產的名稱更改爲例如。 InternalAgentId並在EDMX中更改該字段以保護或甚至私人。然後在你的代碼參照InternalAgentId:

    public string AgentId 
    { 
        get { return this.InternalAgentId; } 
        set { this.InternalAgentId = this.ScrubAgentId(value); } 
    } 
    

    如果您需要在LINQ屬性,你可以看看Microsoft Linq Translation

  2. 另一種方法是改變你的T4產生局部的方法和調用它內部產生的性質。我認爲實體框架模板已經可以做到這一點。