DBMetal générer une classe non valide pour sqlite_sequence
Question
J'utilise DBLinq et DBMetal.exe pour générer LINQ to SQL comme les classes hors d'une base de données SQLite. Chaque fois que je l'utilise DBMetal pour régénérer mes DataContext, il génère une classe pour sqlite_sequence. Le problème est que sqlite_sequence n'est pas une bonne table, de sorte que la classe n'est pas complète.
La question est, peut DBMetal.exe faire un meilleur travail de générer 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, le nom et suivants, qui n'ont pas les types de données est le problème.):
[Table(Name = "main.sqlite_sequence")]
public partial class SQLiteSequence : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private _name;
[DebuggerNonUserCode]
[Column(Storage = "_name", Name = "name", DbType = "")]
public Name
{
get
{
return _name;
}
set
{
if (value != _name)
{
_name = value;
OnPropertyChanged("Name");
}
}
}
private _seq;
[DebuggerNonUserCode]
[Column(Storage = "_seq", Name = "seq", DbType = "")]
public SEQ
{
get
{
return _seq;
}
set
{
if (value != _seq)
{
_seq = value;
OnPropertyChanged("SEQ");
}
}
}
public SQLiteSequence() {}
}
La solution
Je me suis trouvé un moyen. Ce fut 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é un 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
Alors je l'dbml effectuée manuellement (qui est juste un fichier XML, bien sûr) et enlevé le nœud 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 j'ai le contrôle que je veux sur mon SQLite DataContext!