Il problema della delete è che lui non sa cosa cancellare dal momento che l'origine dei dati non è una tabella, ma il risultato di una left outer join.
Te vuoi cancelllare la riga di tabella o tabella2? questo lui non lo sa e quindi lancia l'eccezione.
Se vai a controllare il tuo designer infatti, per tableadapter generati da origini su basi multiple (in italiano da select con join, union all, eccetera) avrà creato solo le funzioni di select e NON quelle di insert, update e delete), per queste devi farti le funzioni a mano (creado apposite funzioni sul tableadapter), OPPURE creare tabelle e tableadapters per le singole tabelle del DB e poi sfruttare le relations del dataset (che tra l'altro se vuoi ti fanno anche i delete on cascade, ovvere le cancellazioni a cascata dei record relazionati fra loro).
Spero di esserti stato d'aiuto