2010-11-07 9 views
0

J'ai ajouté une nouvelle colonne (DateCreated) dans une table (Activity) dans sqlserver. et j'utilise subsonic 2.0, comment puis-je ajouter cette colonne en tant que propriété dans la classe partielle subsonique, de sorte que je peux insérer et mettre à jour la valeur de la colonne "DateCreated". DateCreated sera fourni par l'utilisateur à partir de l'interface graphique.Ajouter une nouvelle propriété dans la classe partielle subsonique

est le code que j'utilise mais il insère NULL & retrive NULL de la base de données.

public partial class ActivityInscription 
{ 

    public struct Columns 
    { 
     public static string IsInMixedList = @"IsInMixedList"; 
    } 
    public bool? IsInMixedList 
    { 
     get; 
     set; 
    } 

} 

S'il vous plaît quelqu'un m'aider à résoudre ce problème.

Répondre

1

Si vous avez ajouté la colonne à la base de données, reconstruisez simplement la couche DAL. Il va chercher la nouvelle colonne et l'ajouter à la DAL subsonique. Il n'y a pas de raison pour une classe partielle dans votre cas. Cela fonctionnera à condition que la table "Activity" fasse partie de votre liste subsonique (includeTableList) des tables du fichier de configuration.

+0

Oui, vous avez raison. mais si nous n'avons pas de code source. J'ai DLL & classe dans le dossier codegenerated. – Abhishek

0

Ce qui suit est la solution, je et il travaille:

classe partielle public Activité {

public DateTime? DateCreated 
    { 
     get; 
     set; 
    } 

    protected override void BeforeInsert() 
    { 
     TableSchema.Table tblSchema = Schema; 

     TableSchema.TableColumn ccDateCreated = new TableSchema.TableColumn(tblSchema); 

      ccrDateCreated.ColumnName = "DateCreated"; 
      ccDateCreated.DataType = DbType.DateTime; 
      ccDateCreated.MaxLength = 0; 
      ccDateCreated.AutoIncrement = false; 
      ccDateCreated.IsNullable = false; 
      ccDateCreated.IsPrimaryKey = false; 
      ccDateCreated.IsForeignKey = false; 
      ccDateCreated.IsReadOnly = false; 
      ccDateCreated.DefaultSetting = @""; 
      ccDateCreated.ForeignKeyTableName = ""; 

     if (!tblSchema.Columns.Contains("DateCreated")) 
     { 
      tblSchema.Columns.Add(ccDateCreated); 
     } 

     if (this.GetSchema().Columns.Contains("DateCreated")) 
      this.SetColumnValue(Columns.DateCreated, DateCreated); 

     base.BeforeInsert(); 
    } 

}

Maintenant, il fonctionne très bien & l'insertion des valeurs que je fournirai à partir de l'interface graphique.

Questions connexes