DBMetal توليد فئة غير صالحة ل SQLite_Secheence
سؤال
أنا أستخدم DBLINQ و DBMETAL.EXE لتوليد LinQ-To-SQL فصول إيقاف قاعدة بيانات SQLite. في كل مرة أستخدم فيها DBMEDAL لتجديد DataContext الخاص بي، فإنه يولد فئة ل SQLite_Eneckence. المشكلة هي أن SQLITE_EATENENCENALN ليس طاولة مناسبة، وبالتالي فإن الفئة ليست كاملة.
السؤال هو، هل يمكن dbmetal.exe القيام بعمل أفضل لتوليد هذه الفئة، أو هل يمكنني إخبار DBMENTAL لتجاهل هذه الفئة؟
شكرا!
هنا دعوة dbmetal.exe
.\DbMetal.exe /namespace:Namespace /provider:SQLite "/conn:Data Source=Datasource.db" /code:CodeFile.cs
إليك SQL SQL الناتج عن SQLITE_SICENORS (أي جدول نظام):
CREATE TABLE sqlite_sequence(name,seq)
إليك الفئة المكسورة التي يتم إنشاؤها (لاحظ الخصائص واسمها و SEQ، والتي لا تحتوي على أنواع البيانات. هذه هي المشكلة):
[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() {}
}
المحلول
احسب طريقة. كانت عملية متعددة الخطوات، ولكن هناك طريقة للقيام بالضبط ما أردت.
أولا، قمت بإنشاء DBML من قاعدة البيانات الخاصة بي، باستخدام هذا الأمر:
.\DbMetal.exe /namespace:Namespace /provider:SQLite "/conn:Data Source=Datasource.db" /dbml:CodeFile.dbml
ثم قمت بتحرير DBML (أي ملف XML فقط، بالطبع) وإزالة العقدة ل SQLite_Sechealce.
أخيرا، قمت بإنشاء DBML.cs مع هذا الأمر:
.\DbMetal.exe /namespace:Namespace /provider:SQLite "/conn:Data Source=Datasource.db" /dbml CodeFile.dbml /code:CodeFile.dbml.cs
إذا كنت ترغب في إضافة جدول، أو أعمدة جديدة، فسوف يتعين علي تحرير ملف DBML، ولكن الآن لدي عنصر التحكم الذي أريده عبر DataContext الخاص بي!