5

上傳模型我有一個大的數據庫現有數據庫一起comunicate,和我5.0數據庫首先使用EF,我遇到的問題是,如果我創建的類一樣[stringlength(50)]任何數據裝修然後上傳數據庫,當我「從數據庫上傳」時,所有數據註釋都消失了。我該怎麼做才能保住它們?失去dataAnottation當從數據庫

+0

我更新了我的答案告訴你我怎麼... – AminSaghi

回答

8

這是非常簡單的:你不能!因爲這些代碼是自動生成的,將被覆蓋在每個模型更新或改變。

但是你可以實現你通過擴展機型所需要的。假設EF生成以下實體類爲您:

namespace YourSolution 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class News 
    { 
     public int ID { get; set; } 
     public string Title { get; set; } 
     public string Description { get; set; }   
     public int UserID { get; set; } 

     public virtual UserProfile User{ get; set; } 
    } 
} 

和你想要做一些變通,以保護你的數據,你的註釋和屬性。所以,請按照下列步驟操作:

首先,添加兩個類中的某些地方(不管你想要的,但最好是在Models)如下所示:

namespace YourSolution 
{ 
    [MetadataType(typeof(NewsAttribs))] 
    public partial class News 
    { 
     // leave it empty. 
    } 

    public class NewsAttribs 
    {    
     // Your attribs will come here. 
    } 
} 

再加入什麼樣的屬性和屬性要第二類 - NewsAttribs在這裏。 :

public class NewsAttrib 
{ 
    [Display(Name = "News title")] 
    [Required(ErrorMessage = "Please enter the news title.")] 
    public string Title { get; set; } 

    // and other properties you want... 
} 

注:

1)必須相同生成的實體類的命名空間和您的類 - 在這裏YourSolution

2)你的第一類必須partial和它的名字必須是相同的EF生成的類。

通過這個和你attribs從未失去了再次...

+1

結束了做這樣的財產以後如下因素本教程http://msdn.microsoft。 COM/EN-US /庫/ ee256141(v = VS.100)的.aspx – EricGS

+0

真棒例子 - 我的關鍵錯誤是不具有命名空間是相同的。希望我早點找到這個例子!希望這個線程的標題更容易找到。擴展部分類並向MVC添加DataValidation。好的答案。謝謝。 – BriOnH