我有一个UserClasses
,Screens
和Workflow
表。Workflow 表是 UserClasses 和 Screens 表之间的关联表。这是它们的结构...
UserClasses
- UserClassID (int PK)
- UserClass (string)
Screens
- ScreenID (int PK)
- ScreenName (string)
Workflow
- UserClassificationID
- ScreenID
我在 UserClasses 表中有以下数据(ID 和名称):
- 1 UserClassification1
- 2 UserClassification2
- 3 UserClassification3
- 4 UserClassification4
- 5 UserClassification5
我在 Screens 表中有以下数据(ID 和名称):
- 1 Screen1
- 2 Screen2
- 3 Screen3
我在 Workflow 表中有以下数据(UserClassificationID 和 ScreenID):
1 1
1 2
通过查看Screen3
与用户分类无关的数据。这就是我需要的,一个与给定用户分类无关的所有屏幕的列表。我该怎么做?
有关我的设置的其他信息。我为 UserClasses 和 Screens 表定义的 2 个类:
public class UserClassification : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Screen> Screens { get; set; }
}
public class Screen : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<UserClassification> UserClassifications { get; set; }
}
以下是我的数据库上下文类中使用的配置类:
class ScreenConfiguration : EntityTypeConfiguration<Screen>]
{
internal ScreenConfiguration()
{
this.Property(x => x.Id).HasColumnName("ScreenID");
this.Property(x => x.Name).HasColumnName("ScreenName");
}
}
class UserClassificationConfiguration : EntityTypeConfiguration<UserClassification>
{
internal UserClassificationConfiguration()
{
this.ToTable("UserClasses");
this.Property(x => x.Id).HasColumnName("UserClassID");
this.Property(x => x.Name).HasColumnName("UserClass");
this.HasMany(i => i.Screens)
.WithMany(c => c.UserClassifications)
.Map(mc =>
{
mc.MapLeftKey("UserClassificationID");
mc.MapRightKey("ScreenID");
mc.ToTable("Workflow");
});
}
}
因此,鉴于上述信息,我需要返回一个用户分类对象,其中包含与此用户分类无关的屏幕列表,在这种情况下,这将是 1 个屏幕项目的列表。我该怎么做这样的事情?
这就是我返回用户分类对象的方式,其中包含关联表中的屏幕列表:
return DbContext.UserClasses
.Include("Screens")
.SingleOrDefault(x => x.Id == userClassificationId);