Ich beginne ein einfaches .NET-Projekt mit FluentNhibernate.
Ich habe einige Beispiele verfolgt, die ich im Internet gefunden habe und es scheint ziemlich einfach zu verstehen.
Ich habe festgestellt, dass, wenn ich FluentNhibernate mein DB-Schema erstellen (Sql Server 2000) generiert es NVARCHAR Felder für meine Zeichenfolgenmodell Eigenschaften.FluentNHibernate und VARCHAR-Spalten
Jemand schlug vor, dass ich eine Konvention hinzufügen kann, um den Typ zu ändern.
Dieses Stück Code funktioniert super:
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");
}
}
}
Jetzt sind meine DB Felder VARCHAR, als ich erwartet hatte.
Ich musste eine Komponente zu meiner Klasse hinzufügen, nach dem DDD-Muster Ich habe die Adresse in einer separaten Klasse und fügte es meiner Kundenklasse.
Ich habe eine separate Zuordnungsdatei für die Adresse erstellt:
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);
}
}
Jetzt sind alle Felder meiner Customer-Tabelle VARCHAR aber die Felder der Adresse (Straße, Ort und Postleitzahl) Komponente als noch erstellt werden NVARCHAR.
offenbar ein Fehler in Fluent-Nhibernate gibt es: es – LeftyX