我已经使用了Entity Framework 6.x,并且我已经通过代码优先方法生成了我的数据库。
在创建db之后,我决定对我的数据库进行一些更改。例如,我想确定模型中Size
属性的值范围。
我的模特:
public class Tag : Entity, ITag
{
/// <summary>
/// Size can be 1, 2, 3 or 4
/// </summary>
[Range(1, 4)]
public virtual int Size { get; set; }
[Required]
[StringLength(25)]
public virtual string Title { get; set; }
[StringLength(256)]
public virtual string Description { get; set; }
public virtual bool IsActive { get; set; }
public virtual ISet<ArticleTag> ArticleTags { get; set; }
public virtual ISet<ProjectTag> ProjectTags { get; set; }
}
迁移:
namespace Jahan.Blog.Web.Mvc.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class Initial : DbMigration
{
public override void Up()
{
// I want to write some code like this that can provide rage of data. 1 to 4:
//AlterColumn("dbo.Tag", "Size", c => c.Int(nullable: false,defaultValue:1));
//... but I don't know how can I do it.
}
public override void Down()
{
}
}
}
答案 0 :(得分:1)
实体框架使用范围注释来指示如何在保存之前验证数据,并通过MVC生成客户端验证。如果您还希望向数据库添加检查约束,则可以在向上迁移中执行此操作:
public override void Up()
{
//Sql to add a check constraint using Sql Server syntax:
Sql(@"ALTER Table dbo.Tags
ADD CONSTRAINT chk_Size
CHECK (Size IN (1, 2, 3, 4))");
}