2010-05-12 3 views
0

J'utilise Dynamic Data avec LINQ to SQL Server et SQL 2008.Utilisation des valeurs par défaut de base de données avec LINQ to SQL codewise

J'ai une colonne GUID qui obtient sa valeur à partir de la valeur par défaut avec NewGUID(). Lorsque j'ai défini IsDbGenerated sur true dans le concepteur, cela fonctionne comme un charme.

Mais lorsque je renouvelle une table, cette propriété est à nouveau définie sur false. Donc je l'ai ajouté aux métadonnées. Pour une raison quelconque, il n'est pas en cours de collecte, "00000000-0000-0000-0000-000000000000" est en train d'être inséré dans la base de données. Le nom d'affichage et le changement en lecture seule sont en cours.

Qu'est-ce qui me manque?

[MetadataType (typeof (CMS_Data_HistoryMetadata))] classe partielle publique CMS_Data_History {

} 

[TableName("Content")] 
public class CMS_Data_HistoryMetadata 
{ 
    [DisplayName("Pagina Title")] 
    public object pageTitleBar { get; set; } 


    [ReadOnly(true)] 
    [DisplayName("Versie")] 
    public object version_date { get; set; } 

    [ColumnAttribute(IsDbGenerated = true)]  
    public object entity_id; 

} 

Répondre

0

I résolu le problème en prolongeant l'insert partiel en cours de mise à jour et vérifier là si le GUID est rempli

vide partiel InsertCMS_Data_History (CMS_Data_History par exemple) {

 if(instance.entity_id == Guid.Empty) 
     { 
      instance.entity_id = Guid.NewGuid(); 
     } 
     this.ExecuteDynamicInsert(instance); 

    } 

    partial void UpdateCMS_Data_History(CMS_Data_History 
exemple

) {if (instance.version_date == DateTime.MinValue) {instance.version_date = DateTime.Now; } this.ExecuteDynamicUpdate (instance); }

Questions connexes