0

我在EF 4.x中使用了ASP.NET MVC 3.0數據庫優先方法。模型使用EF 4.x DBContext生成器生成。現在我想改變模型結構,但不想改變現有的模型,因爲如果數據庫被修改,我必須再次生成模型,所以更改將會消失。我認爲這應該通過重寫部分類來完成,但不是很清楚。有沒有例子可以做到這一點?實施它的最佳方式是什麼?在不更改現有EF 4.x生成模型的情況下修改模型結構數據庫優先方法

編輯:我必須在一些模型中添加一些額外的驗證,而不是全部。我想創建覆蓋生成的類的獨立模型,並且如果EF模型重新生成,我們的定製模型不會受到任何傷害。

+0

如果我undrestand你正確地想要更新某個模型類,但是當你更新整個模型時你不希望它被擦除 – 2012-04-12 06:01:44

+0

更新的問題... – Brij 2012-04-12 06:23:08

+0

當你更新模型更新只有你認爲會改變的類/表 – 2012-04-12 07:29:38

回答

1
  1. 您可以更改用於從模型生成對象的* .tt文件。你想改變對象什麼?
  2. 你可以創建部分類這樣

    命名空間MyProject.Data { 公共部分類用戶{}}

但你的部分類應該是EF的同一個命名空間創建的類

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.ComponentModel; 
using System.ComponentModel.DataAnnotations; 

    [MetadataType(typeof(UserMetadata))] 
    public partial class User : IEntity 
    { 
     internal class UserMetadata 
     { 
      [DisplayName("User Name")] 
      public virtual string UserName 
      { 
       get; 
       set; 
      } 
      [DisplayName("First Name")] 
      public virtual string FirstName 
      { 
       get; 
       set; 
      } 

      [DisplayName("LastName")] 
      public virtual string LastName 
      { 
       get; 
       set; 
      } 
     } 
    } 
+0

我只能改變特定的模型...所以不能更改模板。 – Brij 2012-04-12 06:24:06

+0

然後使用第二種解決方案併爲特定類創建部分類 – Yorgo 2012-04-12 06:26:14

+0

如何更改新類中的現有屬性註釋?我也要保留EF生成的類。 – Brij 2012-04-12 07:50:21

相關問題