2010-08-20 5 views
9

użyciu Fluent NHibernate i automappings (NHibernate tworzy mój schemat db), w jaki sposób mogę uzyskać nhibernate stworzyć nvarchar (max) kolumny w bazie danych opiera się na następujących klasyFluent NHibernate automapping jako nvarchar (max)

public class VirtualPage : BaseEntity 
{ 
    public virtual int ParentId { get; set; } 
    public virtual string PageName { get; set; } 
    public virtual string Title { get; set; } 
    public virtual string Body { get; set; } 
    public virtual string ViewName { get; set; } 
    public virtual string ViewData { get; set; } // this must be nvarchar(max) 
} 

Odpowiedz

27

z automapping można zastąpić domyślną długość pól tekstowych, ale mają one być stosowane do wszystkich pól tekstowych.

Powinieneś być w stanie połączyć automapowanie z jawnymi mapowaniami stworzonymi przy pomocy płynnego API.

Na szczęście, jest to całkiem proste klasy do mapowania (jestem przy założeniu, że jest to część hierarchii table-per-podklasy, dlatego używam SubClassMap<> zamiast ClassMap<> a nie map identyfikator):

public class VirtualPageMap : SubClassMap<VirtualPage> 
{ 
    public VirtualPageMap() 
    { 
     Map(x => x.ParentId); 
     Map(x => x.PageName); 
     Map(x => x.Title); 
     Map(x => x.Body); 
     Map(x => x.ViewName); 
     Map(x => x.ViewData).Length(4001); // anything over 4000 is nvarchar(max) 
    } 
} 

Właściwie nigdy nie używałem automatów, więc zakładam, że zostanie to odebrane poprawnie, ale nie wiem na pewno.

Nie zapomnij dodać mapowania w swojej konfiguracji.

Fluently.configure(
    // blah blah blah 
    .Mappings(m => 
    { 
     m.FluentMappings.AddFromAssemblyOf<VirtualPage>(); 
     m.AutoMappings.Add(// blah blah blah 
    } 
+0

thanx m8, po małej konfiguracji i użyciu przykładu zadziałało jak uroku .. –

+0

Należy pamiętać, że przy użyciu .Length (int.MaxValue) mapy do nvarchar (255). Również, nie używając. Długość w ogóle, mapy do nvarchar (255) – veeroo

2

ustawić właściwość Długość do dużej liczby (ja używam 10000) - spowoduje to NHibernate dokonać nvarchar (max)

+0

Jak ustawić długość nieruchomości? –

+0

Mapa (x => x. ). Długość (10000) :-) – Goblin

+0

hmmmm przepraszam ... może powinienem był ci powiedzieć, że zacząłem używać nhibernate 2 dni temu :), to znaczy, że nie mam absolutnie żadnego pomysłu, gdzie to muszę iść. thanx za pomoc –