2011-01-03 4 views
1

je les classes suivantes:Entity Framework CTP5, code d'abord. Erreur de requête emboîtée

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); 
     } 
    } 

Maintenant, quand je lance le code suivant je reçois une exception (GenericArguments [0], 'System.Int32', sur « System.Data.Entity.Internal .Linq.ReplacementDbQueryWrapper`1 [TEntity] » constitue une violation de la contrainte de type '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 
       } 

Toutes les suggestions?

Répondre

0

Cela semble fonctionner correctement si vous spécifiez la clause 'where' sur la requête 1

+0

Non, cela ne fonctionne pas même avec la clause 'where' –

Questions connexes