Entity Framework 7 迁移后更新 DbContext
Entity Framework 7 Update DbContext after migration
我有一个现有的数据库和一个新的 WPF 项目。
1) 我用 Scaffold-DbContext
构建了数据库上下文并收到 DbContext.cs 和每个实体的文件表示一个数据库表。没关系。
这是其中之一的示例:
public partial class SomeEntity
{
public long SomeEntityID { get; set; }
public int SomeInt { get; set; }
}
2) 我手动更新了这个实体(DbContext.cs 没有变化):
public partial class SomeEntity
{
public long SomeEntityID { get; set; }
public int SomeInt { get; set; }
public string SomeString { get; set; }
}
3) 我用过 Add-Migration
命令。现在我有一个描述所需更改和 DbContextSnapshot.cs 的迁移文件。快照包括我刚刚使用 SomeEntity
所做的更改。数据库未更新。
4) 我用过 Update-Database
命令。数据库已更新以匹配上次迁移。但是我的 DbContext.cs 对数据库的变化一无所知。它仍然是我搭建 DB 后的旧 DbContext。
这样可以吗?我现在是否应该手动更改 DbContext 以匹配我对我的实体所做的更改并将它们应用于数据库?有没有办法在没有 'rescaffolding' 的情况下从数据库更新 DbContext.cs? (因为,例如,实体文件中的所有注释和属性都会丢失,因为如果我再次使用Scaffold-DbContext
,它们将被替换为新的)
您将不得不再次 运行 脚手架,但请记住生成的 类 是部分的,因此您可以将您的更改放在另一个文件中
我有一个现有的数据库和一个新的 WPF 项目。
1) 我用 Scaffold-DbContext
构建了数据库上下文并收到 DbContext.cs 和每个实体的文件表示一个数据库表。没关系。
这是其中之一的示例:
public partial class SomeEntity
{
public long SomeEntityID { get; set; }
public int SomeInt { get; set; }
}
2) 我手动更新了这个实体(DbContext.cs 没有变化):
public partial class SomeEntity
{
public long SomeEntityID { get; set; }
public int SomeInt { get; set; }
public string SomeString { get; set; }
}
3) 我用过 Add-Migration
命令。现在我有一个描述所需更改和 DbContextSnapshot.cs 的迁移文件。快照包括我刚刚使用 SomeEntity
所做的更改。数据库未更新。
4) 我用过 Update-Database
命令。数据库已更新以匹配上次迁移。但是我的 DbContext.cs 对数据库的变化一无所知。它仍然是我搭建 DB 后的旧 DbContext。
这样可以吗?我现在是否应该手动更改 DbContext 以匹配我对我的实体所做的更改并将它们应用于数据库?有没有办法在没有 'rescaffolding' 的情况下从数据库更新 DbContext.cs? (因为,例如,实体文件中的所有注释和属性都会丢失,因为如果我再次使用Scaffold-DbContext
,它们将被替换为新的)
您将不得不再次 运行 脚手架,但请记住生成的 类 是部分的,因此您可以将您的更改放在另一个文件中