如何保持属性属性插入到自动生成的文件中.净MVC

本文关键字:属性 文件 MVC 自动生成 何保持 插入 | 更新日期: 2023-09-27 18:07:04

我使用ASP。. NET MVC 5和实体框架6。所以我在*.tt

下生成了一些文件

我想保留我插入到这些文件中的属性,因为我已经基于实体框架类自动创建了许多页面。

但是当我从数据库更新实体框架模型时,我丢失了我插入的所有内容。

所以我的问题是如何防止它被删除?

//------------------------------------------------------------------------------//// 这段代码生成模板。////手动更改该文件可能会导致异常行为您的应用程序。//手动修改该文件如果重新生成代码将被覆盖。////------------------------------------------------------------------------------

namespace MyWebSIte.DataModel
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    public partial class ItemMovement
    {
        public System.Guid ID { get; set; }
        [DataType(DataType.DateTime)]  <---- I would like to keep it.
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        [Display(Name = "Fecha")]
        public System.DateTime? Changed { get; set; }

如何保持属性属性插入到自动生成的文件中.净MVC

生成的类ItemMovement是一个局部类。
这允许您编写第二个部分类,并使用必要的数据注释进行标记。
在你的例子中,部分类ItemMovement看起来像这样:

   namespace MyWebSIte.DataModel
    {
        using System;
        using System.Collections.Generic;
        using System.ComponentModel;
        using System.ComponentModel.DataAnnotations;
        [MetadataType(typeof(ItemMovementMetaData))]
        public partial class ItemMovement
        {
            public System.Guid ID { get; set; }        
            public System.DateTime? Changed { get; set; }
        }
        public partial class ItemMovementMetaData {
            [DataType(DataType.DateTime)]
            [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
            [Display(Name = "Fecha")]
            public System.DateTime? Changed { get; set; }   
            //....................
        }
    }

这些文件不能手工编辑。您应该利用这些类是partial并且可以"扩展"的事实。看一下元数据类,它们将允许您注释属性。

你可以使用代码优先,它给你最大的控制你的模型和dbcontext

Step1:使用现有数据库创建代码优先模型。使用现有数据库的代码优先模型

步骤2:现在在包管理器控制台中输入enable-migrations

步骤3:使用(db)上下文和从数据库表生成的模型。修改你的模型

步骤4:在包管理器控制台

中键入add-migration[某个名称以标识迁移]。

步骤5:检查生成的迁移文件

步骤6:在包管理器控制台中输入update-database

现在您的更改已更新到数据库。从现在开始,您可以使用代码优先的方法来处理对数据库的更改。