2009-07-27 5 views
0

Ich versuche, das SimpleRepository zu verwenden, um einen Abruf basierend auf einer Nicht-ID-Eigenschaft durchzuführen. Hier ist die Customer-Klasse Ich verwende:Ausnahme "Lambda-Parameter nicht im Bereich" unter Verwendung der SimpleRepository-Methode "Single"

[Serializable] 
    public class Customer : IEntity<Guid> 
    { 
     public Guid ProviderUserKey { get; set; } 

     public Guid ID 
     { 
      get; set; 
     } 
    } 

ich SimpleRepository bin mit bei der Migration eingeschaltet. Der Code, der die „Lambda Parameter nicht in scope“ wirft unter:

public class CustomerRepository : 
     ICustomerRepository 
    { 
     private readonly IRepository _impl; 

     public CustomerRepository(string connectionStringName) 
     { 
      _impl = new SimpleRepository(connectionStringName, 
             SimpleRepositoryOptions.RunMigrations); 
     } 

     public Customer GetCustomer(string userName) 
     { 
      var user = Membership.GetUser(userName); 

      // Code to guard against a missing user would go here 

      // This line throws the exception 
      var customer = _impl.Single<Customer>(c => c.ProviderUserKey.Equals(user.ProviderUserKey)); 

      // Code to create a new customer based on the 
      // ASP.NET Membership user would go here 

      return customer; 
     } 
    } 

ich bin nicht sicher, an welchem ​​Punkt im Ausdruck Kompilierung LINQ diese wirft, aber ich bin mit diesem Beispiel auf eine leere Datenbank. Die Schemagenerationen reichen weit genug, um die Tabellenstruktur zu erstellen, können aber den Ausdruck nicht auswerten.

Weiß jemand, was ich falsch machen könnte?

Danke!

Antwort

1

Ich habe Berichte darüber - können Sie das (und Ihren Code) als ein Problem bitte hinzufügen?

+0

Hallo, ich bekomme diesen Fehler auch, aber ich verwende Find-Methode. – ryudice

+0

Hallo Rob, ich benutze SubSonic 3.0.4 und versuche, dies zu tun: 'x => x.FirstName.ToUpper(). StartsWith (Name)' es wirft Ausnahme beim Konstruieren 'Constraint', weil Constraintfragment null ist. funktioniert ohne 'ToUpper' – TheVillageIdiot