1

私は MVVM と Entity Framework を使用しており、モデル クラスが というデータベース テーブルにマップされていますEmplTable

このクラスにはいくつかのフィールドがあり、この製品を数人の顧客に出荷していますが、データベース テーブルに存在するフィールドは少し異なりますEmplTable

これらは、私のEmplTableモデル クラスに存在するフィールドです。

    public string EmplId
    {
        get { return this.emplId; }
        set { if (this.emplId != value) { this.emplId = value; RaisePropertyChanged("EmplId"); } }
    }

    public string Name
    {
        get { return this.name; }
        set { if (this.name != value) { this.name = value; RaisePropertyChanged("Name"); } }
    }

    //Bare NAV_Name og ikke Name når axaptaversjonen ikke er 4.1
    public string NAV_Name
    {
        get { return this.nav_Name; }
        set { if (this.nav_Name != value) { this.nav_Name = value; RaisePropertyChanged("NAV_Name"); } }
    }

    public string DataareaId
    {
        get { return this.dataareaId; }
        set { if (this.dataareaId != value) { this.dataareaId = value; RaisePropertyChanged("DataareaId"); } }
    }

    public string NAV_StampId
    {
        get { return this.nav_StampId; }
        set { if (this.nav_StampId != value) { this.nav_StampId = value; RaisePropertyChanged("NAV_StampId"); } }
    }

しかし、ある顧客にはNav_Nameフィールドがなく、他の顧客には名前フィールドがありません。もちろん、いくつかの ifs などを実行して、さまざまなEmplTableバージョンのさまざまなモデル クラスを作成し、現在の顧客の正しいテーブルをEmplTable. ただし、これらのフィールドの一部が存在しないか、一部のフィールドが必須ではないことを指定できればよいでしょう。

別の顧客に存在しないフィールドに対してクエリを実行していませんが、EmplTableこれらの「無効な列名」エラーが引き続き発生します。

たとえば、次のクエリを実行したときにEmplTableデータベースに含まれていない場合、無効な列名を取得します。Nav_name

    public EmplTable GetByIdAndFirma(string id, string firma)
    {
        return this.context.Employees.Where(p => p.EmplId == id && p.DataareaId == firma).FirstOrDefault();
    }

これはEntity Frameworkの仕組みか何かによるものだと思いますが、一部のフィールドを必須ではないと指定できるような設定はありますか?

4

0 に答える 0