我有使用代码优先方法的实体框架的经验,但现在我需要第一次使用数据库优先方法。 我得到了这样的实体:
[Table("Users")]
public class User {
[Key]
public int Id { get; set; }
[StringLength(40)]
public string Name { get; set; }
[StringLength(40)]
public string Surname { get; set; }
public string Login { get; set; }
public string Password { get; set; }
public bool IsDeleted { get; set; }
[ForeignKey("UserTypeId")]
public virtual UserType UserType { get; set; }
}
我想向这个实体添加自定义构造函数,所以我添加了如下内容:
public User() { }
public User(string username) => Login = username;
添加构造函数后(上面的只是示例),我收到一个错误,我的代码没有反映数据库结构。 我无法更新此数据库结构,但在实体中使用自定义构造函数将使我的代码更加简单和全面。是否有任何选项可以向该实体添加自定义构造函数或方法,而无需更新数据库结构?
编辑:
确切的错误是:
System.InvalidOperationException: The model backing the 'DataContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).
我确信除了添加构造函数之外,我的实体没有其他任何更改。
是的,您可以向实体添加自定义构造函数或方法,而不会影响 Entity Framework (EF) Core 中的数据库结构。您看到的错误可能与您添加的构造函数无关。
如果您在添加构造函数后看到错误,请确保:
进一步诊断:
Scaffold-DbContext
命令(或 dotnet CLI 中的等效命令)以确保您的模型与数据库同步。总之:是的,您可以添加自定义构造函数和方法,而不会影响数据库。确保模型的其他方面仍然与数据库架构匹配。