我有一個UserClasses
,Screens
和Workflow
表。工作流表是UserClasses和Screens表之間的關聯表。以下是它們的結構...如何使用Entity Framework代碼優先得到不在關聯表中的其他值
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
我在屏幕表中的以下數據(ID和名稱) :
- 1 Screen1
- 2 Screen2
- 3 Screen3
我在工作流表中的下列數據(UserClassificationID和ScreenID):
1 1
1 2
通過查看數據Screen3
未關聯到用戶分類。這是我需要的,與給定用戶分類無關的所有屏幕的列表。我將如何做到這一點?
有關我的設置的其他信息。我已經爲UserClasses和屏幕表中定義的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);
我想有一個用屏幕列表返回的用戶分類對象。這可能嗎? –
我認爲是:s.UserClassifications.Where(uc => uc.Id == someUserId).Count()== 0. – tschmit007
謝謝你的答案看起來不錯。 –