gpt4 book ai didi

entity-framework - 使用 Code First 迁移的 Entity Framework 的唯一约束

转载 作者:行者123 更新时间:2023-12-03 13:43:36 24 4
gpt4 key购买 nike

我正在 MVC 4 应用程序上进行 Entity Framework (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 ,这和以前的问题一样,这个条件永远不会返回真。

理想情况下,我想在我的迁移文件中包含一些标准 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 ...

最佳答案

对于代码优先迁移,我刚刚在 Up() 中使用了它。在单个列上添加唯一索引的方法:

CreateIndex(table: "Organisations", 
column: "Name",
unique: true, // unique index
name: "MyIndex");

...然后在 Down()方法:
DropIndex(table: "Organisations", 
name: "MyIndex");

这就是你所追求的吗?

关于entity-framework - 使用 Code First 迁移的 Entity Framework 的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13070431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com