【问题标题】:Updating database after code changes in Entity framework Database First在实体框架 Database First 中的代码更改后更新数据库
【发布时间】:2017-04-26 19:19:33
【问题描述】:

我有一个名为 feedback 的类,通过数据库优先方法生成

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;}
}

我后来在overallFb 上添加了一个范围为 0-5 的约束,如下所示:-

public partial class TravellerTripStatus
{
    [Range(0,5)]
    public Nullable<byte> OverallExperienceFb { get; set; }
}

此更改反映在 GUI 上,因此编辑表单将不允许输入超出范围的值,但 如何使此更改反映到数据库中(这样检查约束会自动获取添加到表定义的overallFB字段)?

当我尝试从模型生成数据库时,没有强制执行此类约束。

【问题讨论】:

  • 你在使用 SQL Server 吗?
  • 它是一个使用 SQL Server localDB 的 asp.net 应用程序

标签: c# sql-server entity-framework ef-database-first


【解决方案1】:

目前无法使用数据注释或流体 API 向表添加约束。但解决方法是在 Seed 方法内的 Configuration.cs 文件中发出 SQL 命令:

db.Database.ExecuteSqlCommand("ALTER TABLE TravellerTripStatus ADD CONSTRAINT CK_TravellerTripStatus_OverallExperienceFb CHECK (OverallExperienceFb BETWEEN 0 AND 5)");

【讨论】:

  • 基本上,我必须手动应用约束。到数据库表。嗯
  • 是的。与直接更改数据库相比,将上述行添加到配置文件的一个优点是,如果您需要从头开始重新部署系统,则不必记住这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多