Ich verwende NHibernate zum Speichern von Downloads in meiner MySQL-Datenbank für eine ASP.NET MVC-Website. Ich verwende zwei Klassen. Eine heißt Download
für den Download selbst und eine mit der Bezeichnung DownloadContent
für die Datei selbst (damit ich sie leichter laden kann, wenn ich nur die Metadaten abrufen will).
Die Deklarationen und Zuordnungen der Datenklassen sehen wie folgt aus:
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");
}
}
Wenn ich jetzt versuche, so etwas zu tun:
dl.Contents = new DownloadContent { Data = content };
db.session.SaveOrUpdate(content);
Ich bekomme eine NHibernate.MappingException
mit der Meldung "No persister for: System.Byte[]". Ich habe in den NHibernate-Dokumenten nachgeschaut und byte[] sollte korrekt zugeordnet werden.
Was mache ich falsch?