2009-08-23 20 views
2

Ich verwende DBLinq und DBMetal.exe, um Linq-zu-SQL-ähnliche Klassen aus einer SQLite-Datenbank zu generieren. Jedes Mal, wenn ich DBMetal zum Generieren meines DataContext verwende, wird eine Klasse für sqlite_sequence generiert. Das Problem ist, dass sqlite_sequence keine richtige Tabelle ist, daher ist die Klasse nicht vollständig.DBMetal generiert eine ungültige Klasse für sqlite_sequence

Die Frage ist, kann DBMetal.exe eine bessere Arbeit zum Generieren dieser Klasse, oder kann ich DBMetal sagen, diese Klasse zu ignorieren?

Danke!

Hier ist mein DBMetal.exe Anruf

.\DbMetal.exe /namespace:Namespace /provider:SQLite "/conn:Data Source=Datasource.db" /code:CodeFile.cs 

Hier ist der tatsächlich erzeugten SQL für sqlite_sequence (das ist eine Systemtabelle):

CREATE TABLE sqlite_sequence(name,seq) 

Hier ist die gebrochene Klasse, die (man beachte die Eigenschaften erzeugt wird , Name und Seq, die keine Datentypen haben. Das ist das Problem):

Antwort

2

Ich habe einen Weg gefunden. Es war ein mehrstufiger Prozess, aber es gibt eine Methode, genau das zu tun, was ich wollte.

Zuerst erzeugen ich eine dbml aus meiner Datenbank, mit diesem Befehl:

.\DbMetal.exe /namespace:Namespace /provider:SQLite "/conn:Data Source=Datasource.db" /dbml:CodeFile.dbml 

Dann gebe ich die dbml bearbeitet (die nur eine XML-Datei ist, natürlich) und entfernt den Knoten für sqlite_sequence.

Schließlich erzeugt ich die dbml.cs mit diesem Befehl:

.\DbMetal.exe /namespace:Namespace /provider:SQLite "/conn:Data Source=Datasource.db" /dbml CodeFile.dbml /code:CodeFile.dbml.cs 

Wenn ich eine Tabelle hinzugefügt werden soll, oder neue Spalten, ich werde die dbml Datei Hand haben bearbeiten, aber jetzt habe ich die Kontrolle möchte ich über meinen SQLite DataContext!

Verwandte Themen