修改模型结构而不更改数据库第一种方法中现有的EF 4.x生成模型

时间:2012-04-12 05:46:16

标签: asp.net asp.net-mvc asp.net-mvc-3 entity-framework database-first

我在EF 4.x中使用ASP.NET MVC 3.0 Database First方法。使用EF 4.x DBContext Generator生成模型。现在我想更改模型结构但不想更改现有模型,因为如果修改了数据库,我必须再次生成模型,这样更改就会消失。我认为应该通过覆盖部分类来完成,但不清楚。有没有任何例子可以做到这一点?实施它的最佳方法是什么?

编辑:我必须在某些模型中添加一些额外的验证,而不是全部。我想创建独立的模型来覆盖生成的类,如果重新生成EF模型,我们的定制模型没有任何损害。

1 个答案:

答案 0 :(得分:1)

  1. 您可以更改* .tt文件以从模型生成对象。你想改变什么对象。
  2. 您可以像这样创建部分类

    namespace MyProject.Data {     公共部分类用户{} }

  3. 但您的部分类应该是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;
                }
            }
        }