相关疑难解决方法(0)

首先使用EF代码的唯一键

我的项目中有以下模型

public class Category
{   
    public Guid ID { get; set; }
    [Required(ErrorMessage = "Title cannot be empty")]
    public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

而我正在尝试制作一个Title独特的密钥,我搜索解决方案,但找不到任何.可以建议我怎么做,拜托?

c# unique-key ef-code-first entity-framework-4.1

62
推荐指数
2
解决办法
7万
查看次数

使用代码优先迁移的实体框架的唯一约束

我正在MVC 4应用程序上进行实体框架(v 5)代码首次迁移.我想在数据库级别添加一个唯一约束.

我知道这可以在创建表时完成,但我已经有了一个表. http://msdn.microsoft.com/en-US/data/jj591621

我尝试了以下内容,标记为答案答案:EFCodeFirst和SqlCe4的唯一约束

我的数据库上下文略有不同,我提供的连接名称如下

public AppDatabaseContext() : base("MyConnectionDBContext")
Run Code Online (Sandbox Code Playgroud)

当我使用包管理控制台更新数据库时,不会调用重写的种子方法:

protected override void Seed(AppDatabaseContext context)
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下内容:http://romiller.com/2010/07/31/ef-ctp4-tips-tricks-running-additional-ddl/

我没有使用嵌套类,这是因为我似乎必须通过app.config注册初始化程序.我在代码中初始化它时无法正常工作.调用InitializeDatabase,但以下条件永远不会成立:

(!context.Database.Exists() || !context.Database.ModelMatchesDatabase())
Run Code Online (Sandbox Code Playgroud)

这是因为在迁移运行后会发生这种情况......

我也在一个阶段尝试了这个:实体框架代码中的唯一约束首先,它与以前一样是问题,这个条件永远不会返回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");
 }
Run Code Online (Sandbox Code Playgroud)

显然使用正确的SQL ...

entity-framework code-first ef-code-first asp.net-mvc-4

17
推荐指数
3
解决办法
1万
查看次数