3

なぜ次のことが起こるのか、私は困惑しています:

シナリオは、Stcoxrefs (派生バージョンではなく純粋なエンティティ) 内に 2 つのビット フィールドがあるというものです。

以下を使用すると、int、char、varchar フィールドは正しいですが、linqpad でクエリを実行すると正しく動作しますが、ビット フィールドは DB の内容に関係なく常に false です。

public List<Stcoxref> GetAllowedStockholderTransferOrganisations(int currentStockHolder)
{
    return (from s in Entities.Stcoxrefs
            where s.OrganisationId == currentStockHolder
            orderby s.CompanyName2
            select s).ToList();
}

以下が証明するように、テーブルマッピングは正しいです...

次の関数を使用すると、すべてのフィールドが正しくなり、ビット フィールドは常に false ではなくなり、DB のデータに従って設定されます。

public List<Stcoxref> GetAllowedStockholderTransferOrganisations(int currentStockHolder)
{

    List<Stcoxref> test1 = (from s in Entities.Stcoxrefs
                            where s.OrganisationId == currentStockHolder
                            orderby s.CompanyName2
                            select s).ToList();

    return test1;
}

は?!?!?!?

編集: Stcoxref は EntityType です。検証するテーブル マッピングは次のとおりです。

STCOXREF_NO : int           ->    StcoxrefNo : Int32
ROLE_CODE : char            ->    RoleCode : String
ORG_ID : int                ->    OrganisationId : Int32
ROLE_CODE2 : char           ->    RoleCode2 : String
ORG_ID2 : int               ->    OrganisationId2 : Int32
COMPANY_NAME2 : varchar     ->    CompanyName2 : String
INACTIVE : bit              ->    InActive : Boolean
SUPRESS_EMAIL : bit         ->    SuppressEmail : Boolean

InActive と SuppressEmail の両方が奇妙な動作を示します。

4

1 に答える 1