我使用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; }
答案 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方法来处理对数据库的更改。