C# 实体框架模型从数据库更新,自定义属性无法识别

C# 实体框架模型从数据库更新,自定义属性无法识别,c#,sql,asp.net-mvc,entity-framework,C#,Sql,Asp.net Mvc,Entity Framework,我只想问一个关于实体框架的一般性问题。当我想从数据库更新模型或从数据库向模型添加新项时,我将丢失所有自定义属性 举例来说 My Sql Table Test Id int TestId int EF creates model automatically public class Test { public int Id {get;set;} public int TestId {get;set;} } //I want to add custom pr

我只想问一个关于实体框架的一般性问题。当我想从数据库更新模型或从数据库向模型添加新项时,我将丢失所有自定义属性

举例来说

My Sql Table
Test
Id     int
TestId int

EF creates model automatically
public class Test
{
     public int    Id {get;set;}
     public int    TestId {get;set;}
}
//I want to add custom property on class 
public class Test
{
     public int    Id {get;set;}
     public int    TestId {get;set;}
     public string TestName {get;set;} //I added custom property
}
但当我更新模型时,我会丢失自定义属性,每次我都需要一次又一次地添加它

你有什么解决办法吗


谢谢

您需要使用
partial
关键字

EF应该将
partial
关键字添加到它创建的类中(如果没有,那么您需要了解如何获得用于添加关键字的过程-通常通过编辑.tt文件)。然后可以使用相同的类定义创建一个单独的.cs文件。就你而言:

public partial class Test
然后,C#编译器将这两个定义视为同一个定义,并将它们“相加”。如果你遵循一些简单的规则,这是可行的

  • 两个定义必须相同并包含partial关键字
  • 两者必须在同一模块(.exe、.dll)中定义
  • 两者必须在同一命名空间中定义
这样,您就有了一个EF维护的类定义和一个您维护的类定义。EF不会覆盖您的自定义属性

您的课程将是:

public partial class Test
{
    public string TestName {get; set;} 
}

为了更新数据库模式,您是否进行了迁移?不,我没有使用@atlasmaybe,那么您使用的是什么?您阅读了我的问题吗?正如我在那里所说的,当我想添加新表或更新任何sp或添加新sp时,我使用的是数据库函数中的更新模型,所以我会丢失所有自定义属性@Atlasmaybebe。在这里,光顾对您没有帮助。。。不管怎样,你的问题不是很清楚,这就是为什么我问你在用什么。。。但也许你应该从这里开始:或者,如果你不使用aspnet核心,这里亲爱的@Philip Smith,你让我度过了美好的一天,这真是解决我问题的好办法。我终于节省了15分钟:)谢谢