如何保持属性属性插入到自动生成的文件中.净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; }
生成的类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
现在您的更改已更新到数据库。从现在开始,您可以使用代码优先的方法来处理对数据库的更改。