C# 首先在实体框架数据库中更改代码后更新数据库
我有一个名为feedback的类,它是通过数据库优先方法生成的C# 首先在实体框架数据库中更改代码后更新数据库,c#,sql-server,entity-framework,ef-database-first,C#,Sql Server,Entity Framework,Ef Database First,我有一个名为feedback的类,它是通过数据库优先方法生成的 public partial class Feedback { public Nullable<byte> OverallExperienceFb { get; set; } public Nullable<byte> FunFb { get; set; } public Nullable<byte> FoodFb { get; set; } public Null
public partial class Feedback
{
public Nullable<byte> OverallExperienceFb { get; set; }
public Nullable<byte> FunFb { get; set; }
public Nullable<byte> FoodFb { get; set; }
public Nullable<byte> TravelFb { get; set; }
public Nullable<byte> PlanningFb { get; set; }
public Nullable<byte> MusicFb { get; set; }
public Nullable<byte> PlaceFb { get; set; }
public Nullable<byte> WeatherFb { get; set; }
public Nullable<int> Paid { get; set; }
public int ID{get; set;}
}
此更改反映在GUI上,因此编辑表单不允许输入超出范围的值,但如何使此更改反映到数据库中(以便自动将检查约束添加到表定义的整体fb
字段)
当我尝试从模型生成数据库时,不会强制执行此类约束。使用数据注释或流体API向表中添加约束目前是不可能的。但解决方法是在种子方法内的Configuration.cs文件中发出SQL命令:
db.Database.ExecuteSqlCommand("ALTER TABLE TravellerTripStatus ADD CONSTRAINT CK_TravellerTripStatus_OverallExperienceFb CHECK (OverallExperienceFb BETWEEN 0 AND 5)");
您使用的是SQL Server吗?它是一个使用SQL Server LocalDb的asp.net应用程序。基本上,我必须手动应用约束。到数据库表。嗯,是的。与直接更改数据库相比,向配置文件中添加上述行的一个优点是,如果需要从头开始重新部署系统,则不必记住要这样做。
db.Database.ExecuteSqlCommand("ALTER TABLE TravellerTripStatus ADD CONSTRAINT CK_TravellerTripStatus_OverallExperienceFb CHECK (OverallExperienceFb BETWEEN 0 AND 5)");