13

格納された Proc は、BIT に変換せずに値が 0 または 1 の列を返します。私のPOCOで、フィールドを次のように宣言すると

public bool MyColumn {get; set;}

このエラーが発生しています:

The specified cast from a materialized 'System.Int32' type to the 'System.Boolean' type is not valid.

EF は戻り値を整数として認識するため、これは実際には理にかなっています。

Procに触れずに、舞台裏のマッピングで0/1をFalse/Trueに自動的に変換する(注釈を追加するか、おそらく流暢なAPIを使用する)簡単な方法があるのではないかと思っていますか?

前もって感謝します!

4

5 に答える 5

29

もう 1 つのオプションは、ストアド プロシージャから BIT を返すことです。これにより、C# 側で何かをキャストしたり、奇妙な装飾を使用したりする必要がなくなります。つまり、以下のように T-SQL で整数値を BIT にキャストできます。

select col1, col2, CONVERT(BIT, CASE WHEN col3 IS NULL THEN 0 ELSE 1 END) as colWithBit
FROM table1
于 2015-02-19T21:01:18.537 に答える
12

できることは、ブール表現を表す別のプロパティを持つことです。NotMappedEFがマッピングの対象と見なさないように、属性で装飾します。true /falseその他のプロパティの値に基づいて、条件を実行して戻ります。

public Class Customer
{

  [NotMapped]
  public bool MyColumnBool 
  {
      get
      {
         return (MyColumn ==1);
      }
  }

  public int MyColumn {get; set;}
  // other properties

}
于 2012-08-02T18:14:46.483 に答える
-3

使用するSystem.Convert.ToBoolean(int)

于 2012-08-02T18:18:31.020 に答える