我正在开始一个新的ASP.Net MVC 5项目并使用EF5和Code First。由于我是EF新手,我试图找出如何设置两个类之间的关系,以便它按照我想要的方式工作。
我正在为“测试”建模。有一个Test类和一个Questions类。用户通过添加一个或多个问题并设置问题顺序来构建测试。因此,我们不仅在测试和问题之间存在一对多的关系,而且还为给定的测试手动排序这些问题(问题来自通用池,教师可以从该池构建他们的个别测试但是命令问他们想要的方式),
我理解如何在EF中获得正常的,基本的一对多关系。但是如何处理这种关系中的排序?我只是创建自己的“链接”类而不是让EF为我构建链接表吗?我可以在Data Annotations或Fluent API中调整一些内容以使其工作(我一直在使用DA而不是Fluent,但如果有帮助则愿意使用它。)
答案 0 :(得分:1)
如果不同的用户可以按不同的顺序使用相同的问题,那么您应该在测试和问题之间创建链接表(实体),这将保持问题的顺序。像这样:
public class Test
{
// ...
public virtual ICollection<TestQuestion> Questions { get; set; }
}
public class TestQuestion
{
public virtual Test Test { get; set; }
public virtual Question Question { get; set; }
public int Order { get; set; }
}
public class Question
{
// ...
}
映射将如下所示:
modelBuilder.Entity<Test>()
.HasMany(t => t.Questions)
.WithRequired(tq => tq.Test);
modelBuilder.Entity<TestQuestion>()
.HasRequired(tq => tq.Question)
.WithOptional();