2010-07-31 7 views
0

Je construis des modèles LINQ à la main, parce que je veux (comprendre ce qui se passe réellement).Problèmes de création de mon propre DataAttribute personnalisé pour LinqToSql

Il y a un grand tutoriel sur la conversion de classes standard en modèles Linq. Je lis Here.

Pour mon exemple d'application que j'ai créé quelques modèles qui ressemblent à:

public class LoginModel 
{ 
    [Column(IsPrimaryKey=true, 
      DbType="UniqueIdentifier NOT NULL", 
      CanBeNull=false)] 
    public Guid LoginID { get; set; } 
    // .. and more question useless properties... 
} 

Je vois sans aucun doute un modèle pour la clé primaire qui m'a amené à créer ...

[AttributeUsage(AttributeTargets.Property 
       | AttributeTargets.Field, 
       AllowMultiple = false)] 
public sealed class ColumnPrimaryKeyAttribute : DataAttribute 
{ 
    public ColumnPrimaryKeyAttribute() 
    { 
     CanBeNull = false; 
     IsPrimaryKey = true; 
     DbType = "UniqueIdentifier NOT NULL"; 
    } 
    // etc, etc... 
} 

Donc quand j'utilise mon nouvel Attribut, LINQ ne récupère pas mon attribut (même s'il hérite du même DataAttribute que Column) Y a-t-il un pas qui me manque ou devrais-je abandonner cette idée?

Répondre

1

Essayez héritant de ColumnAttribute ...

public class ColumnPrimaryKeyAttribute : ColumnAttribute 

Edit:

Jamais esprit, je vois que ColumnAttribute est scellé. Vous pouvez être hors de la chance comme ma supposition est LINQ fait un System.Attribute.GetCustomAttributes (typeof (ColumnAttribute));

+0

Ouais c'est ce que je pense aussi. S'il y avait un moyen de remplacer ou de remplacer les méthodes LINQ (je veux dire que je pourrais écrire mon propre fournisseur LINQ?) Cela devient compliqué. Je laisserai ça reposer pendant un jour ou deux. –

Questions connexes