J'utilise NHibernate pour stocker des téléchargements dans ma base de données MySQL pour un site web ASP.NET MVC. J'utilise pour les cours. Un appelé Download
pour le téléchargement lui-même et un appelé DownloadContent
pour le fichier lui-même (donc je peux le charger plus facilement quand je veux juste obtenir les métadonnées).NHibernate MappingException: pas de persister pour byte []
Les déclarations de classe de données et applications ressemblent à ceci:
public class Download
{
public virtual string Id { get; set; }
public virtual string OutFileName { get; set; }
public virtual DownloadContent Contents { get; set; }
public virtual string MimeType { get; set; }
public virtual bool DoForward { get; set; }
public virtual string RedirectLink { get; set; }
}
public class DownloadMap : ClassMap<Download>
{
public DownloadMap()
{
Id(x => x.Id);
Map(x => x.OutFileName);
References<DownloadContent>(x => x.Contents);
Map(x => x.MimeType);
Map(x => x.DoForward).Not.Nullable();
Map(x => x.RedirectLink);
}
}
public class DownloadContent
{
public virtual byte[] Data { get; set; }
}
public class DownloadContentMap : ClassMap<DownloadContent>
{
public DownloadContentMap()
{
Id();
Map(x => x.Data).CustomType("BinaryBlob");
}
}
Maintenant, quand j'essaie de faire comme ceci:
dl.Contents = new DownloadContent { Data = content };
db.session.SaveOrUpdate(content);
je reçois un NHibernate.MappingException
avec le message « Pas de persister pour: System.Byte [] ". Je l'ai cherché avec les documents NHibernate et l'octet [] devrait correspondre correctement.
Qu'est-ce que je fais mal?
qui est à peu près ce que je fais déjà –
@ DontCare4Free Votre code 'dit db.session.SaveOrUpdate (contenu),' moins que ce soit une faute de frappe ou je manque quelque chose, « contenu » est de type octet [ ], que vous ne pouvez pas passer en paramètre 'SaveOrUpdate()' –
Il s'agit d'un wrapper autour du type byte []. –