新しい製品を挿入する前に、その値がデータベースに既に存在するかどうかを確認したいと思います。いくつかのフィールドにはnullとfalseの値があります。いくつかのフィールドでExistsレコードを確認する方法 - Entity Framework
私はこのような方法で作成しました:
public bool IsExists(Guid warrantyId, bool hasColor, Guid? colorId, bool hasSize, Guid? sizeId)
{
return _products.Any(row => (hasColor && row.ColorId.Value == colorId.Value) && (hasSize && row.SizeId.Value == sizeId.Value) && row.WarrantyId == warrantyId);
}
を、それは常にfalse
を返します。
私はこの部分
row.WarrantyId == warrantyId
を削除すると、それが正常に動作します。私はそれをどうやって確認できるのか分からない。ここ
は私のデータベース内にいくつかのデータです:
私はこの方法には、この項目を渡さ:
warrantyId:F1F2D639-22AF-618A-7422-4122BB38D545
hascolor:true , ColorId: 47f3d639-18de-5d26-91f7-0cd4465a161a
HasSize:false and SizeId:null
その戻り偽。
私はこのような方法を書き直しても問題ありません。
public bool IsExists(Guid warrantyId, bool hasColor, Guid? colorId, bool hasSize, Guid? sizeId)
{
var result = _products.Where(row => row.WarrantyId == warrantyId).AsQueryable();
if (hasColor)
result = result.Where(row => row.ColorId.Value == colorId.Value).AsQueryable();
else
result = result.Where(row=>row.HasColor==false).AsQueryable();
if (hasSize)
result = result.Where(row => row.SizeId.Value == sizeId.Value).AsQueryable();
else
result = result.Where(row => row.HasSize == false).AsQueryable() ;
return result.Any();
}
あなたは何を試そうとしていますか? 'true'を返すデータベース行とパラメータの値を表示する –
@StephenMuecke申し訳ありませんが、私のコードとその誤りをデバッグできますか? –
「真実」を返すと期待しているデータの例を挙げない限り、おそらく助けてくれるかもしれません。 –