【发布时间】:2012-10-15 17:53:26
【问题描述】:
我正在 MVC 4 应用程序上进行实体框架 (v 5) 代码优先迁移。我想在数据库级别添加一个唯一约束。
我知道创建表时可以这样做,但我已经有一个表。 http://msdn.microsoft.com/en-US/data/jj591621
我尝试了以下,标记为答案:Unique constraint with EFCodeFirst and SqlCe4
我的数据库上下文略有不同,我提供的连接名称如下
public AppDatabaseContext() : base("MyConnectionDBContext")
当我使用包管理控制台更新数据库时,没有调用覆盖的种子方法:
protected override void Seed(AppDatabaseContext context)
我还尝试了以下方法:http://romiller.com/2010/07/31/ef-ctp4-tips-tricks-running-additional-ddl/
我没有使用嵌套类,这是因为我似乎必须通过 app.config 注册初始化程序。在代码中初始化它时,我无法让它工作。 InitializeDatabase 被调用,但以下条件永远不会成立:
(!context.Database.Exists() || !context.Database.ModelMatchesDatabase())
这是因为这发生在迁移运行之后...
我也在一个阶段尝试过这个:Unique Constraint in Entity Framework Code First,这和以前一样的问题,这个条件永远不会返回 true。
理想情况下,我想在我的迁移文件中包含一些标准 SQL。有没有办法做到这一点?如果没有,我在哪里可以看到如何使用代码优先迁移来实现这一目标?
谢谢!
更新:
我不能使用SQL函数有什么原因吗?
public override void Up()
{
AddColumn("Posts", "Abstract", c => c.String());
Sql("UPDATE Posts SET Abstract = LEFT(Content, 100) WHERE Abstract IS NULL");
}
显然使用了正确的 SQL...
【问题讨论】:
标签: entity-framework ef-code-first asp.net-mvc-4 code-first