1

私は次のクラスを持っています:

public class Category 
    {
        public int CategoryId { get; set; }
        public string Name { get; set; }
    }

public partial class CategoryMap : EntityTypeConfiguration<Category>
    {
        public CategoryMap()
        {
            this.HasKey(c => c.CategoryId);
            this.Property(c => c.Name).IsRequired().HasMaxLength(400);
        }
    }

public class MyObjectContext : DbContext
    {
        public MyObjectContext(string connectionStringName)
            : base(connectionStringName)
        {
        }

        public DbSet<Category> Categories { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new CategoryMap());
            base.OnModelCreating(modelBuilder);
        }
    }

次のコードを実行すると、例外が発生します (GenericArguments[0], 'System.Int32', on 'System.Data.Entity.Internal.Linq.ReplacementDbQueryWrapper`1[TEntity]' がタイプ 'TEntity' の制約に違反しています)。 )

DbDatabase.SetInitializer<MyObjectContext>(new DropCreateDatabaseIfModelChanges<MyObjectContext>());
                using (var context = new MyObjectContext("NopSqlConnection"))
                {
                    var query1 = from c in context.Categories
                                 select c.CategoryId;
                    var test1 = query1.ToList(); //works fine

                    var query2 = from c in context.Categories
                                 where query1.Contains(c.CategoryId)
                                 orderby c.Name descending
                                 select c;
                    var test2 = query2.ToList(); //throws the exception
                }

助言がありますか?

4

1 に答える 1

0

query1にwhere句を指定するとうまくいきそうです

于 2011-01-03T09:09:20.297 に答える