Frage

Wie erstellen Sie binäre Spalten in der DB-Schema Erbauer mit SubSonic?

Also heute Abend habe ich beschlossen, in SubSonic zu tauchen. Ich sehe eine Menge Fragen auf hier und großen Antworten von Rob und vielen anderen. Ich sehe, dass SubSonic ist ein ORM, mit den T4-Vorlagen es einige sehr schöne und effiziente Klassen aus einer bestehenden Datenbank erzeugen kann.

Aber, ich möchte den anderen Weg gehen. Ich habe eine sehr reiche Domäne, und möchte meine Tabellen adhoc aus meiner Domain erstellen mit SubSonic und die RunMigrations Option.

All sehr gut funktioniert (schrieb sogar meine eigene Upgrade () Funktion, die die Code-Basis erkennt, ob Änderungen hat auf der Grundlage der Versammlung der Revisionsnummer und wandert dann all Objekt Updates die DB - ziemlich glatt und effizient für die automatische Aktualisierung der DB ).

Aber wie haben Sie SubSonic binären Spalten erstellen? Ich benutze es nicht wie beabsichtigt (ich nicht mit Query oder sqlquery, nur die Linq-Schnittstelle von SimpleRepository) Vielleicht. Siehe unten (unter Verwendung eines gemeinsamen "Blog Post" Beispiel):

[SubsonicTable]
public class Post
{
    [SubSonicPrimaryKey]
    public Int32 PostID { get; set; }

    [SubSonicStringLength(1024)]
    public String Title { get; set; }

    [SubSonicLongString]
    public String Body { get; set; }

    [SubSonicStringLength(5)]
    public String? LangaugeCode { get; set; }

    public DateTime? Published { get; set; }

    public PostType PostType { get; set; }
    public Int32 PostTypeID
    {
        get
        {
            return this.PostType.GetHashCode();
        }
        set
        {
            Enum.Parse(typeof(PostType), value.ToString());
        }
    }

    public Byte[] Image { get; set; }
}

public enum PostType
{
    NotSet = 0
    ,BlogPost
    ,Comment
    ,Trackback
    ,Pingback
}

Wenn dieser Beitrag Objekt wird gespeichert oder abgefragt, über die SimpleRepository, es fehlt zwei Spalten: PostType (oder Typ Enum PostType) und Bild (vom Typ byte [] array)

.

Nun, fand ich die Hack-of-eine-Antwort hier, dass jemand veröffentlichte ein Int32 PostTypeID über die Verwendung von um das ENUM-Problem zu erhalten. Komm Rob sollte SubSonic der Lage sein, Aufzählungstypen INT zu unterstützen und von ihnen zurück. ;.) Aus diesem Grund ich die PostTypeID haben, und diese ordnungsgemäß erstellt und geschrieben wird

Hier ist ein Beispiel für den Befehl, der den Beitrag Tisch für mich schafft, sowie den ersten Beitrag einfügen:

Post p = new Post();
p.Title = "My Title";
p.Body = "The body of the post.";
p.PostType = PostType.BlogPost;

var repo = new SimpleRepository(SimpleRepositoryOptions.RunMigrations);
repo.Add(p);

. Hinweis: Sie sollten diesen Code nicht in der Produktion verwendet werden, da die RunMigrations viele zusätzliche TSQL-Abfragen auf den ersten Lauf hat

Sie können über die am Beispiel sehen dies die Beiträge Tabelle erstellen, wenn es auch nicht vorhanden ist, wie die Spalten zu schaffen.

Aber bedeutet dies die beiden Spalten nicht erstellen oben erwähnt. PostType noch Bild

Die Gedanken? Und Dank im Voraus.

War es hilfreich?

Lösung

Ich hatte dachte Wir hatten einen binären Sniffer - stellt sich heraus, es nicht den Trick tut. Ich brauche diese hinzufügen - noch besser, wenn Sie nicht Forking etwas dagegen hätte, was wir haben und das Hinzufügen dieser - ich würde Sie lieben es. Nehmen Sie eine Beute an unsere Extensions Sachen - Sie wollen mod ToDataTable () (glaube ich) ...

Wenn Sie nicht die Chance bekommen, - ich werde diese hinzufügen, wenn ich rev SimpleRepo weiter ...

Andere Tipps

Ich lief in die binäre Spalte selbst ausstellen. Wenn Sie einen Patch haben / regele ich es zu testen wäre bereit.

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