当一个列值依赖于另一列值时的实体框架代码优先约束

Kyr*_*o M 5 c# constraints ef-code-first

我有以下模型:

class RentOrder
{
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何在 Entity Framework Code First 中添加StartDate必须始终小于的约束EndDate?我知道的唯一方法是通过在重写Seed方法中执行 SQL 命令来添加它。有没有更简单的方法,不用SQL?

Kyr*_*o M 3

正如我在问题中提到的,现在解决这个问题的唯一方法是在Seed方法中编写 SQL 命令:

public class MyDatabaseInitializer : DropCreateDatabaseAlways<MyDatabaseContext>
{
    protected override void Seed(MyDatabaseContext context)
    {
        context.Database.ExecuteSqlCommand(@"ALTER TABLE Orders
            ADD CONSTRAINT C_Dates CHECK(EndDate > StartDate)");
    }
}
Run Code Online (Sandbox Code Playgroud)

并在应用程序启动的某个地方调用:

Database.SetInitializer(new MyDatabaseInitializer());
Run Code Online (Sandbox Code Playgroud)