2010-10-10 17 views
0

Je reçois ce message d'erreur:Comment répondre « ne peut pas décider quelle propriété de considérer la clé » erreur

« ne peut pas décider quelle propriété à considérer la clé - vous pouvez créer un appelé 'ID' ou marquer un attribut avec SubSonicPrimaryKey »

le code en question est généré par le context.tt:

public SqlQuery Delete<T>(Expression<Func<T,bool>> column) where T:new() 
    { 
     LambdaExpression lamda = column; 
     SqlQuery result = new Delete<T>(this.Provider); 
     result = result.From<T>(); 
     result.Constraints=lamda.ParseConstraints().ToList(); 
     return result; 
    } 

dans mon DB la table une respective Ctually a une clé primaire appelée ID. Et je l'ai essayé d'insérer SubSonicPrimaryKey Attribut:

uint _ID; 
    [SubSonicPrimaryKey] 
    public uint ID 
    { 
     get { return _ID; } 
     set 
     {... 

Comment puis-je résoudre ce problème?

Répondre

1

Vous devez publier la trace de pile de votre exception. Ceci est juste une conjecture, mais je suppose que subsonic trouve deux clés primaires possibles, l'une appelée ID et l'autre avec l'attribut SubSonicPrimaryKey et ne vérifie pas si elles sont égales et puisque le nombre de clés possibles n'est pas égal à 1 l'exception est levée.

Vous devriez essayer de supprimer l'attribut SubSonicPrimaryKey de votre classe, puisque la propriété est déjà appelée ID.

0

Je suppose que votre problème est lié au type de valeur uint. SubSonic a des problèmes pour gérer les types de valeur non signés. Essayez d'utiliser une propriété int à la place pour votre clé primaire!