Entity Framework CTP5, сначала код. Ошибка вложенного запроса - PullRequest
1 голос
/ 03 января 2011

У меня есть следующие классы:

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', для '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
                }

Есть предложения?

1 Ответ

0 голосов
/ 03 января 2011

Кажется, что это нормально работает, если вы укажете условие 'where' в query1

...