gpt4 book ai didi

sql-server - EFCodeFirst 和 SqlCe4 的唯一约束

转载 作者:行者123 更新时间:2023-12-02 20:29:31 25 4
gpt4 key购买 nike

我正在使用 Entity Framework Code First 和 SqlCe4 编写 ASP.net MVC3 应用程序。

我一直在设计几个模型,并发现了一个很有趣的模型。这是我到目前为止所拥有的:

public class Preference
{
public int PreferenceId { get; set; }

[Required]
public int StudentId { get; set; }
public virtual Student Student { get; set; }

[Required]
public int PresentationId { get; set; }
public virtual Presentation Presentation { get; set; }

[Required]
public int Rank { get; set; }
}

但是,我需要一个唯一的约束或索引,因为对于特定的学生,我希望他们必须有一个偏好列表,但每个学生的PresentationId 必须是唯一的。有没有办法通过 Code First 或某些验证属性来做到这一点?

这听起来像是我要沿着多对多关系的分支,以 Preference 对象作为中介,添加 Rank 属性。但是,我似乎找不到如何确保这些值是唯一的。最好的方法真的是手动向 EF 之外的数据库添加唯一索引吗?

最佳答案

目前(即 EF 4.1)EF 没有用于创建唯一索引的属性或配置机制。

但是,如果您使用数据库初始化程序,则可以手动创建它

public class MyInitializer : IDatabaseInitializer<MyContext>
{
public void InitializeDatabase(MyContext context)
{
if (!context.Database.Exists() || !context.Database.ModelMatchesDatabase())
{
context.Database.DeleteIfExists();
context.Database.Create();

context.ObjectContext.ExecuteStoreCommand("CREATE INDEX IX_Preference_PresentationId ON Preference ( PresentationId )");
}
}
}

或者在初始化程序之外执行它。

关于sql-server - EFCodeFirst 和 SqlCe4 的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6727738/

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