Zaczynam prosty projekt .NET z FluentNhibernate.
Podążyłem za kilkoma przykładami znalezionymi w Internecie i wydaje mi się, że łatwo je zrozumieć.
Zdałem sobie sprawę, że jeśli pozwolę FluentNhibernate zbudować mój schemat DB (Sql Server 2000) generuje on NVARCHAR pól dla moich właściwości modelu ciągów.FluentNHibernate i VARCHAR Kolumny
Ktoś zasugerował, że mogę dodać konwencję, aby zmienić typ.
Ten fragment kodu działa świetnie:
public class AnsiStringConvention : IPropertyConvention
{
private static Type stringType = typeof(string);
public void Apply(FluentNHibernate.Conventions.Instances.IPropertyInstance instance)
{
if (instance.Property.PropertyType == stringType)
{
instance.CustomType("AnsiString");
}
}
}
Teraz moje pola DB są VARCHAR, jak się spodziewałem.
Potrzebowałem dodać komponent do mojej klasy, zgodnie ze wzorem DDD Umieściłem adres w oddzielnej klasie i dodałem go do mojej klasy Klienta.
stworzyłem osobny plik odwzorowania na adres:
public class AddressMap : ComponentMap<Address>
{
public AddressMap()
{
Map(x => x.Number);
Map(x => x.Street)
.Length(100);
Map(x => x.City)
.Length(50);
Map(x => x.PostCode)
.Length(5);
}
}
Teraz wszystkie dziedziny mojego stolika klienta są VARCHAR ale polach Adres (ulica, miasto i kod pocztowy) składnikiem są nadal tworzone jako NVARCHAR.
Najwyraźniej nie jest to błąd w Fluent NHibernate-: -S – LeftyX