Frage

ich diese Probe laufen hier: https: //github.com/jagregory/fluent-nhibernate/blob/master/src/Examples.FirstProject/Program.cs

Alle C # Eigenschaften vom Typ String in TEXT SQL-Feldern zugeordnet und nicht

nvarchar OR varchar, wie ich es ausnehmen würde als Default-Einstellung sein.

Wie kann ich das ändern?

Ich weiß, ich kann dies tun:

Map(x => x.Name).CustomSqlType("nvarchar").Length(50); // does not work !!!
Map(x => x.Name).CustomSqlType("nvarchar (50)"); // does work !!!

, aber ich will nicht jedes Feld ...

ändern

UPDATE: ... deshalb kann ich eine benutzerdefinierte Konvention über =>

Was ich tun muß, ist eine benutzerdefinierte Convention Klasse schreiben wie:

public class ColumnStringToNVarCharConvention : IPropertyConvention, IPropertyConventionAcceptance
    {
        public void Apply(IPropertyInstance instance)
        {
            instance.CustomSqlType("nvarchar");
        }

        public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
        {
            criteria.Expect(x => x.Property.GetType().Equals(typeof(string)));
        }
    }

Kann jemand die richtige der obige Code? Ich habe es getestet und es hat nicht funktioniert whyever ...

War es hilfreich?

Lösung

Sie sind mit SQLite, richtig? Das ist, wo dein Problem liegt. Es wird beschrieben, besser in diese Antwort auf eine andere Stelle , aber SQLite nicht über Daten- Typen im gleichen Sinne wie andere Datenbanken. Es ist kein Fluent NHibernate Problem, es ist die Art und Weise NHibernate beschäftigt sich mit einem fast Daten typenlos Datenbank.

Weitere strenge Datenbanken, Fluent NHibernate standardmäßig sinnvolle Datentypen. Es variiert je nach Datenbank, aber es wird ein nvarchar für Strings sein.

Andere Tipps

Sie könnten Überprüfung versuchen, was Kompatibilitätsgrad der Datenbank, die Sie verbinden ist. Ist sie zu niedrig eingestellt ist (80), könnte es zu Text wird säumige weil NTEXT erst SQL2005 veraltet wurde, der Kompatibilitätsgrad ist 90. Dies ist keine Garantie, nur für möglich gehalten habe.

Dies ist die MSDN Anweisungen für die Kompatibilität füllhöhe ...

Um zu sehen, oder die Kompatibilität ändern Ebene einer Datenbank

Nachdem an den entsprechenden Verbindungs Instanz der SQL Server-Datenbank Motor, im Objekt-Explorer, klicken Sie auf die Servername die Serverstruktur zu erweitern.

Erweitern Sie Datenbanken, und je nach die Datenbank, wählen Sie entweder einen Benutzer Datenbank oder System-Datenbanken erweitern und wählen Sie eine Systemdatenbank.

Rechtsklick auf die Datenbank, und dann klicken Sie auf Eigenschaften.

Das Dialogfeld Datenbankeigenschaften öffnet sich.

Im Bereich Seite auswählen, klicken Optionen.

Der aktuelle Kompatibilitätsgrad in der Kompatibilitätsebene angezeigt Listenfeld aus.

Um die Kompatibilität Ebene zu ändern, wählen Sie eine andere Option aus dem aufführen. Die Auswahlmöglichkeiten sind SQL Server 2000 (80), SQL Server 2005 (90) oder SQL Server 2008 (100).

Mit SQLite gibt es nur 5 Datentypen, von denen eine Zeichenfolge.

http://www.sqlite.org/c3ref/c_blob.html

Jeder Wert in SQLite hat einen von fünf grundlegende Datentypen:

64-Bit-Ganzzahl mit Vorzeichen
64-Bit-IEEE-Gleitkommazahl
String
BLOB
NULL

Diese Konstanten sind Codes für die einzelnen diese Typen.

Beachten Sie, dass die SQLITE_TEXT konstant war auch in SQLite-Version 2 für einen gebrauchten ganz andere Bedeutung. Software dass Links gegen beide SQLite-Version 2 und SQLite-Version 3 verwenden soll SQLITE3_TEXT, nicht SQLITE_TEXT.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top