C# 实体框架与排序的一对多关系
我正在启动一个新的ASP.NETMVC5项目,首先使用EF5和代码。因为我是EF的新手,所以我试图弄清楚如何设置两个类之间的关系,使其按照我想要的方式工作 我正在模拟一个“测试”。有一个测试班和一个问题班。用户通过添加一个或多个问题并设置问题顺序来构建测试。因此,我们不仅在测试和问题之间有一对多的关系,而且对给定测试的问题进行手动排序(问题来自通用池,教师可以从该池中构建他们的个人测试,但按照他们想要的方式排序问题)C# 实体框架与排序的一对多关系,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我正在启动一个新的ASP.NETMVC5项目,首先使用EF5和代码。因为我是EF的新手,所以我试图弄清楚如何设置两个类之间的关系,使其按照我想要的方式工作 我正在模拟一个“测试”。有一个测试班和一个问题班。用户通过添加一个或多个问题并设置问题顺序来构建测试。因此,我们不仅在测试和问题之间有一对多的关系,而且对给定测试的问题进行手动排序(问题来自通用池,教师可以从该池中构建他们的个人测试,但按照他们想要的方式排序问题) 我了解如何在EF中获得正常、基本的一对多关系。但是如何处理这种关系中的顺序呢?
我了解如何在EF中获得正常、基本的一对多关系。但是如何处理这种关系中的顺序呢?我是否只是创建自己的“链接”类,而不是让EF为我构建链接表?我是否可以调整数据注释或Fluent API中的某些内容来实现这一点(我一直在使用DA而不是Fluent,但如果有帮助的话,我愿意使用它)。如果不同的用户可以以不同的顺序使用相同的问题,那么您应该在测试和问题之间创建链接表(实体),它将保持问题的顺序。大概是这样的:
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
{
// ...
}
公共类测试
{
// ...
公共虚拟ICollection问题{get;set;}
}
公共类测试问题
{
公共虚拟测试测试{get;set;}
公共虚拟问题{get;set;}
公共整数顺序{get;set;}
}
公开课问题
{
// ...
}
映射将如下所示:
modelBuilder.Entity<Test>()
.HasMany(t => t.Questions)
.WithRequired(tq => tq.Test);
modelBuilder.Entity<TestQuestion>()
.HasRequired(tq => tq.Question)
.WithOptional();
modelBuilder.Entity()
.有很多(t=>t个问题)
.WithRequired(tq=>tq.Test);
modelBuilder.Entity()
.HasRequired(tq=>tq.Question)
.WithOptional();