如何在ASP.NET MVC中将属性属性保存到自动生成的文件中

时间:2016-09-14 15:31:55

标签: c# .net entity-framework asp.net-mvc-5

我使用ASP.NET MVC 5和Entity Framework 6.所以我在* .tt

下生成了一些文件

我想保留我插入这些文件的属性,因为我已经基于Entity Framework类自动创建了许多页面。

但是当我从数据库更新Entity Framework模型时,我放弃了所有插入的内容。

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

  

// --------------------------------------------- --------------------------------- // //此代码是从模板生成的。 //   //手动更改此文件可能会导致意外行为   你的申请。 //手动更改此文件   如果重新生成代码,则覆盖。 //   // ------------------------------------------------ ------------------------------

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; }

3 个答案:

答案 0 :(得分:2)

这些文件不是手动编辑的。您应该利用这些类partial并且可以“扩展”的事实。看看Metadata classes,它们将允许您注释属性。

答案 1 :(得分:2)

生成的类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; }   

            //....................
        }
    }

答案 2 :(得分:0)

您可以使用codefirst,它可以控制您的模型和dbcontext。

步骤1:使用现有数据库创建codefirst模型。 codefirst model using the existing database

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

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

步骤4:在包管理器控制台中键入add-migration [某些名称以标识迁移]

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

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

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