2010-02-06 6 views
1

J'ai un petit problème avec fluentNhibernate et MySQL. Je voudrais carte mon entité:Mappage d'une propriété DateTime à un horodatage mysq + fluentnhibernate

public class Topic 
{ 
    public Topic() 
    { 
     ParentTopic = null; 
    } 

    public virtual Guid Id { get; set; } 
    public virtual string Name { get; set; } 
    public virtual DateTime CreatedAt { get; private set; } 
    public virtual Guid CreatedBy { get; set; } 
    public virtual IList<Post> Posts { get; set; } 
    public virtual Topic ParentTopic { get; set; } 
} 

à une table avec le même nom. Mon plus gros problème est comment faire le mapping du CreatedAt de sorte que dans la base de données j'obtiens un horodatage qui n'est modifié que sur insert et ignoré lors de la mise à jour.

thx;)

Répondre

2

a trouvé la réponse à mon petit problème :)

public class TopicMap : ClassMap<Topic> 
{ 
    public TopicMap() 
    { 
     Table("Topics"); 
     Id(t => t.Id).GeneratedBy.Guid(); 
     Map(t => t.CreatedAt).Not.Nullable().Generated.Insert().CustomSqlType("timestamp"); 
     Map(t => t.CreatedBy).Not.Nullable(); 
     Map(t => t.Name).Not.Nullable().Length(500); 
     HasMany(t => t.Posts); 
     References(t => t.ParentTopic).Nullable().Cascade.All().ForeignKey("FK_Topic_ParentTopic"); 
    } 
} 

Ce coutures pour travailler dans mes tests unitaires. Espérons que cela ne produira pas de plus grands problèmes à l'avenir.

Si quelqu'un rencontre un problème avec ceci alors s'il vous plaît faites le moi savoir.

+0

Pas un problème, juste une suggestion. 'GeneratedBy.Guid()' est inutile parce que NHibernate Fluent peut comprendre à partir de la propriété comment le générer. –

Questions connexes