名前と値の組み合わせごとに述語を追加する必要があります:
SELECT <whatever you need>
FROM Entity_Table et
WHERE et.e_name = 'Joe'
AND EXISTS (SELECT 1
FROM AttributeValue_Table avt
JOIN Entity_AttrVal ea ON ea.e_id = et.e_id
WHERE ea.a_id = avt.av_id
AND avt.prop_name = 'color'
AND avt.prop_value = 'black')
AND EXISTS (SELECT 1
FROM AttributeValue_Table avt
JOIN Entity_AttrVal ea ON ea.e_id = et.e_id
WHERE ea.a_id = avt.av_id
AND avt.prop_name = 'whiskers'
AND avt.prop_value = 'short')
(SQL Serverの方言が光っていたら、お詫びします)
任意の数の比較を行うには、SQLを生成して実行する必要があります。
コメントで述べたように、これはEAVが苦痛(実際にはアンチパターン)であることを示していますが、リレーショナルデータベースにバインドされている場合、代替手段がない場合があることを経験から知っています。