문제

DBLINQ 및 DBMETAL.EXE를 사용하여 SQLITE 데이터베이스에서 클래스와 같은 LINQ-to-SQL을 생성합니다. dbmetal을 사용하여 Datacontext를 재생할 때마다 sqlite_sequence에 대한 클래스를 생성합니다. 문제는 sqlite_sequence가 적절한 테이블이 아니기 때문에 클래스가 완료되지 않는다는 것입니다.

문제는 dbmetal.exe 가이 클래스를 생성하는 더 나은 일을 할 수 있습니까, 아니면 dbmetal에게 해당 클래스를 무시하도록 지시 할 수 있습니까?

감사!

다음은 내 dbmetal.exe 호출입니다

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

다음은 SQLite_Sequence 용 실제 생성 SQL (시스템 테이블)은 다음과 같습니다.

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_SEVERENCE의 노드를 제거했습니다.

마지막 으로이 명령으로 DBML.CS를 생성했습니다.

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

테이블 또는 새 열을 추가하려면 DBML 파일을 직접 편집해야하지만 이제 SQLITE Datacontext를 통해 원하는 컨트롤이 있습니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top