このエラーが発生しました。原因については確信がありますが、修正方法がよくわかりません。
私は使用entity framework code first
しており、意図的に設定したエンティティの1つに外部キーがありますlong?
:
public long? ClientId { get; set; }
public virtual Client Client { get; set; }
次に、作成したデータベースのデータを使用して入力するDataGridView
と、ここで問題が発生します。の要素を介してカスタム検索/フィルタリングを使用してdgv
おり、このカスタム フィルタリングのコードは継承されています。今までは問題なく機能していましたが、フィルタリングしようとするとClientID
、投稿名のエラーが発生します。
私はデバッグを開始し、これを見ました:
if (property.PropertyType == typeof(string))
{//some code
else if (property.PropertyType == typeof(bool))
{//other code
else if(rule.Data.Equals("1") || rule.Data.ToLower().Equals("true"))
{//again some code
else if (property.PropertyType == typeof(Int32))
{//some code
...
そして、私の値は型long?
であるため、以下の条件に該当しないため、コードは次のデフォルト条件に入ります。
else
{
long value = 0;
if (long.TryParse(rule.Data, out value))
{..code
デバッガーによると、本体に入るため、解析は true を返しますif
が、上記からエラーを受け取り、プロパティのタイプは ですSystem.Nullable1[System.Int64]
。
まったく同じロジックを使用する 2 番目の外部キーがあり、すべてが正常に機能します。私が見ることができる唯一の違いは、作業ケースのタイプはlong
であり、エラーケースのタイプはlong?
です。
タイプを残したいのですがlong?
、この場合の回避策があるかどうかわかりません。