man*_*eko 6 sql-server ef-code-first asp.net-mvc-3
我正在使用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; }
}
Run Code Online (Sandbox Code Playgroud)
然而,我需要一个独特的约束或索引,因为对于特定的学生,我希望他们必须有一个偏好列表,但PresentationId需要对每个学生都是唯一的.有没有办法通过Code First或一些验证属性来做到这一点?
这听起来像是我将Preference对象作为中间人的多对多关系的分支,以添加Rank属性.但是,我似乎无法找到如何确保值是唯一的.真正的手动只是在EF之外的数据库中添加唯一索引是最好的方法吗?
按照埃兰加所说的,我最终让它以类似的方式工作,但像这样:
我在 DataContext 类中使用了以下代码:
public class StudentRegistrationContext : DbContext
{
public StudentRegistrationContext()
{
Database.SetInitializer(new StudentRegistrationDatabaseInitializer());
}
public DbSet<Student> Students { get; set; }
public DbSet<Teacher> Teachers { get; set; }
public DbSet<Presenter> Presenters { get; set; }
public DbSet<Presentation> Presentations { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在数据库初始化程序类中,我使用了以下内容:
public class StudentRegistrationDatabaseInitializer : DropCreateDatabaseIfModelChanges<StudentRegistrationContext>
{
protected override void Seed(StudentRegistrationContext context)
{
base.Seed(context);
context.Database.ExecuteSqlCommand("CREATE UNIQUE INDEX UX_Preferences_StudentId_PresentationId ON Preferences (StudentId, PresentationId)");
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1376 次 |
最近记录: |