0

我们的 ASP.NET C# Web 应用程序用于以下环境 .NET Framework 4

ASP.NET Web 窗体。

IIS 7

视窗 2008

视觉工作室 2010

.NET IDE C#

HTTPS ( SSL )

-实体框架5

在我们的应用程序中,我们有以下表格。

1) 学习车

2) EnrollmentEntriesInLearningCarts

3) 报名入口

4) 教程

5) aspnet_Users

LearningCart 和 EnrollmentEntry 表(具有 EnrollmentEntriesInLearningCarts 桥接表)之间存在多对多关系

LearningCart 和 EnrollmentEntry 表之间的多对多关系如下图所示:

在此处输入图像描述

此外,我还确保 EnrollmentEntriesInLearningCarts 桥表中已经包含数据:

在此处输入图像描述

 namespace PerlsData.Domain
 {
     using System;
     using System.Collections.Generic;

     public partial class LearningCart
     {
         public LearningCart()
         {

         }

         public virtual System.Guid LearningCartsDatabaseId { get; set; }
         public virtual short Type { get; set; }
         public virtual short Status { get; set; }
         public virtual string LearningCartsName { get; set; }
         public virtual Nullable<System.Guid> Creator { get; set; }
         public virtual Nullable<System.Guid> TeamLead { get; set; }
         public virtual Nullable<short> isSubmitted { get; set; }
         public virtual Nullable<short> isRemoved { get; set; }
         public virtual Nullable<System.DateTime> DateSharedWithInstructor { get; set; }

         public virtual ICollection<EnrollmentEntry> associatedEnrollmentEntry { get; set; }     

     }
 }
 namespace PerlsData.Domain
 {
     using System;
     using System.Collections.Generic;

     public partial class EnrollmentEntry
     {
         public EnrollmentEntry()
         {

         }

         public virtual System.Guid EnrollmentEntryDatabaseID { get; set; }
         public virtual System.Guid UserId { get; set; }
         public virtual System.Guid TutorialDatabaseID { get; set; }

         public virtual aspnet_Users aspnet_Users { get; set; }
         public virtual Tutorial Tutorial { get; set; }

         public virtual ICollection<LearningCart> associatedLearningCart { get; set; }
     }
       }


  namespace PerlsData.Domain
  {
      using System;
      using System.Collections.Generic;

      public partial class aspnet_Users
      {
         public aspnet_Users()
         {

         }

         public System.Guid ApplicationId { get; set; }
         public System.Guid UserId { get; set; }
         public string UserName { get; set; }
         public string LoweredUserName { get; set; }
         public string MobileAlias { get; set; }
         public bool IsAnonymous { get; set; }
         public System.DateTime LastActivityDate { get; set; }

      }  
 }

 namespace PerlsData.Domain
 {
     using System;
     using System.Collections.Generic;

     public partial class Tutorial
     {
         public Tutorial()
         {

     }

         public virtual System.Guid TutorialDatabaseID { get; set; }
         public virtual string TutorialCode { get; set; }
         public virtual System.Guid SectionDatabaseID { get; set; }
         public virtual System.Guid UserId { get; set; }

         public virtual aspnet_Users aspnet_Users { get; set; }
         public virtual ICollection<EnrollmentEntry> EnrollmentEntries { get; set; }

         public virtual Section Section { get; set; }

     }
 }

  namespace PerlsData
  {
     public class Context : System.Data.Entity.DbContext
     {

         public DbSet<PerlsData.Domain.EnrollmentEntry> EnrollmentEntries { get; set; }
         public DbSet<PerlsData.Domain.LearningCart>  LearningCarts { get; set; }

         public Context()
              : base("Name=LocalSqlServer")
         {

         }

         protected override void OnModelCreating(DbModelBuilder modelBuilder)
         {

             base.OnModelCreating(modelBuilder);

             modelBuilder.Entity<PerlsData.Domain.LearningCart>().ToTable("LearningCarts",      schemaName: "dbo");

             modelBuilder.Entity<PerlsData.Domain.LearningCart>().HasKey(t =>      t.LearningCartsDatabaseId);

             modelBuilder.Entity<PerlsData.Domain.LearningCart>().Property(t =>           t.LearningCartsDatabaseId)
                                                                                              .HasColumnName("LearningCartsDatabaseId")
                                                                                         .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

                  modelBuilder.Entity<PerlsData.Domain.LearningCart>().HasMany(learnC      =>           learnC.associatedEnrollmentEntry)
                      .WithMany(enEnt => enEnt.associatedLearningCart)
                       .Map(
                            m =>
                            {
                                m.ToTable("EnrollmentEntriesInLearningCarts", schemaName:      "dbo");
                                m.MapLeftKey("LearningCartsDatabaseId");
                                m.MapRightKey("EnrollmentEntryDatabaseID");

                            }
                   );

                  modelBuilder.Entity<PerlsData.Domain.EnrollmentEntry>     ().ToTable("EnrollmentEntry", schemaName: "dbo");

             modelBuilder.Entity<PerlsData.Domain.EnrollmentEntry>().HasKey(e =>      e.EnrollmentEntryDatabaseID);


             modelBuilder.Entity<PerlsData.Domain.EnrollmentEntry>().Property(t =>      t.EnrollmentEntryDatabaseID)
                 .HasColumnName("EnrollmentEntryDatabaseID")
                 .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

             modelBuilder.Entity<PerlsData.Domain.EnrollmentEntry>().Property(t =>      t.TutorialDatabaseID)
                                                                                      .HasColumnName("TutorialDatabaseID");

             modelBuilder.Entity<PerlsData.Domain.EnrollmentEntry>().HasMany(enEnt =>      enEnt.associatedLearningCart)
                 .WithMany(learnC => learnC.associatedEnrollmentEntry)
                 .Map(
                       m =>
                       {
                           m.ToTable("EnrollmentEntriesInLearningCarts", schemaName: "dbo");
                           m.MapLeftKey("EnrollmentEntryDatabaseID");
                           m.MapRightKey("LearningCartsDatabaseId");

                       }
              );

             modelBuilder.Entity<PerlsData.Domain.aspnet_Users>().ToTable("aspnet_Users",      schemaName: "dbo");

             modelBuilder.Entity<PerlsData.Domain.aspnet_Users>()
             .Property(au => au.UserId)
             .HasColumnName("UserId");

             modelBuilder.Entity<PerlsData.Domain.aspnet_Users>()
             .HasKey(au => au.UserId);

             modelBuilder.Entity<PerlsData.Domain.aspnet_Users>()
             .Property(au => au.UserName)
             .HasColumnName("UserName");

             modelBuilder.Entity<PerlsData.Domain.Tutorial>().ToTable("Tutorial",      schemaName: "dbo");

             modelBuilder.Entity<PerlsData.Domain.Tutorial>().Property(t =>      t.TutorialDatabaseID)
     .HasColumnName("TutorialDatabaseID")
     .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);


        modelBuilder.Entity<PerlsData.Domain.Tutorial>()..HasKey(t =>      t.TutorialDatabaseID);

             modelBuilder.Entity<PerlsData.Domain.Tutorial>().HasRequired(x => x.Section)
                 .WithMany(x => x.Tutorials)
                 .HasForeignKey(x => x.SectionDatabaseID);

         }
     } 


 }

这是代码无法检索信息的地方:

         public LearningCart       getLearningCartAssociatedWithLoggedInStudentsTutorial(Guid userOfInterestGuid, Guid      tutorialOfInterestGuid){

                 LearningCart learningCartsAssociatedWithLoggedInStudentTutorial = new LearningCart();
                 EnrollmentEntry enrollmentEntryAssociatedWithLoggedInStudentTutorial = new EnrollmentEntry();

                 LearningCart learnCartOfInterest = null;
                 IQueryable<LearningCart> learnCartIQueryable = null;
                 EnrollmentEntry enrEntOfInterest = null;

                 using (PerlsData.Context context = new PerlsData.Context())
                 {

                     context.Configuration.LazyLoadingEnabled = true;

                     context.Configuration.ProxyCreationEnabled = true;

                      IQueryable<EnrollmentEntry> enrollmentEntryOfInterestIQueryable =
                                                                              context.EnrollmentEntries.Where(ee =>     
                                                                           ee.aspnet_Users.UserId == userOfInterestGuid
                                                                      &&           ee.Tutorial.TutorialDatabaseID == tutorialOfInterestGuid);

                      foreach (EnrollmentEntry enrEnt in enrollmentEntryOfInterestIQueryable)
                     {


                         enrEntOfInterest = enrEnt;


                     }

                          learnCartIQueryable = context.LearningCarts.Where(lc =>
                                                                     lc.associatedEnr ollmentEntry.Any(ee =>
                                                                            ee.EnrollmentEntryDatabaseID == enrEntOfInterest.EnrollmentEntryDatabaseID));

                         foreach (LearningCart lc in learnCartIQueryable)
                         {
                              learnCartOfInterest = lc;
                         }

                     context.Entry(learnCartOfInterest).State =      System.Data.EntityState.Detached;

                 }


                 return learnCartOfInterest;
             }

问题来自于试图找出一个特定的 LearningCart 模块。我尝试检索 LearningCart,并将其放在 IQueryable 对象中:

 IQueryable<LearningCart> learnCartIQueryable = context.LearningCarts.Where(lc =>
                                                                     lc.associatedEnrollmentEntry.Any(ee =>
                                                                       ee.EnrollmentEntryDatabaseID == enrEntOfInterest.EnrollmentEntryDatabaseID));

使用 Visual Studio 2010,我将 learnCartIQueryable 放在“添加观察”下,我得到“枚举没有结果”

我已经在 EnrollmentEntriesInLearningCarts 桥接表中有数据。

为什么实体框架无法检索 EnrollmentEntriesInLearningCarts 桥表中的数据,并且只给出错误“枚举未产生结果”?

4

0 回答 0