2009-08-23 10 views
2

J'utilise DBLinq et DBMetal.exe pour générer des classes Linq-to-SQL à partir d'une base de données SQLite. Chaque fois que j'utilise DBMetal pour régénérer mon DataContext, il génère une classe pour sqlite_sequence. Le problème est que sqlite_sequence n'est pas une table correcte, donc la classe n'est pas complète.DBMetal générant une classe invalide pour sqlite_sequence

La question est, DBMetal.exe peut-il faire un meilleur travail de génération de cette classe, ou puis-je dire à DBMetal d'ignorer cette classe?

Merci!

Voici mon appel DBMetal.exe

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

Voici le SQL généré réel pour sqlite_sequence (qui est une table système):

CREATE TABLE sqlite_sequence(name,seq) 

Voici la classe cassée qui obtient généré (notez les propriétés , name et seq, qui n'ont pas de types de données, c'est le problème):

Répondre

2

J'ai trouvé un moyen. C'était un processus en plusieurs étapes, mais il y a une méthode pour faire exactement ce que je voulais.

D'abord, je généré une dbml de ma base de données, en utilisant cette commande:

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

Je effectuée manuellement le dbml (qui est juste un fichier XML, bien sûr) et a retiré le noeud pour sqlite_sequence.

Enfin, je généré les dbml.cs avec cette commande:

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

Si je veux ajouter une table, ou de nouvelles colonnes, je vais devoir remettre éditer le fichier dbml, mais maintenant je le contrôle que je veux sur mon SQLite DataContext!

Questions connexes