c# - 从数据库更新 Entity Framework 模型,无法识别自定义属性

标签 c# sql asp.net-mvc entity-framework

我只想问 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 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 关键字。 Partial Classes and Methods (C# Programming Guide)

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

public partial class Test

然后 C# 编译器会将这两个定义视为相同的定义并将它们“添加”在一起。如果您遵循一些简单的规则,这是可行的。

  • 两个定义必须相同并包含部分关键字。
  • 两者必须在同一个模块(.exe、.dll)中定义
  • 两者必须在同一个命名空间中定义。

通过这种方式,您将拥有一个由 EF 维护的类定义和一个由您维护的类定义。 EF 不会覆盖您的自定义属性。

您的类(class)将只是:

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

关于c# - 从数据库更新 Entity Framework 模型,无法识别自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50638881/

相关文章:

c# - 二进制格式化程序 - 类型 UserControl 未标记为可序列化

c# - .NET HttpClient - 测量流下载速度

c# - 如何使用 PayPal 付款预核准

c# - Moq 和 nUnit 测试 Entity Framework MVC 3 C#

c# - 从 Razor 页面发送 List<Object> 到 Update 的行?

c# - C#如何获取单词对应的发音音素?

c# - NLog xsi :type not working with custom target

sql - 按每个项目至少有一个进行分组

sql - SQL 如何处理(或不处理)where 子句中的错误?

c# - 使用 c#/ASP.net 应用程序获取 SqlParameter 已包含在另一个 SqlParameterCollection 错误中