Jo det är riktigt det borde bli en latch.
I andra fallet så tror jag att du borde sätta Data till 'Z'
DataIn <= Data when WE_N = '1' else (others => '0');
Data <= DataUt when WE_N = '0' else (others =>'Z'); -- Vet inte om man kan blanda others och Z
Men ifall detta är något som du skall syntha så kan det nog bli svårt med tristate signalen 'Z'.
I fall det är så att det är en FPGA du har och minneskontrollen i FPGAn och minnet extern så tror jag att man får ta till en sorts mellan komponent som är FPGA/tillverkar specefik.
Exempelvis på mitt FPGA kort (Starterkit 3) där jag har ett externt SRAM med en inout data port har jag gjort följande.
ext_hw_ram_we <= ram_we;
mem1 : for i in ext_hw_ram_io'range generate
iod0 : IOBUF_LVCMOS33 port map
(I => ext_hw_ram_data_out(i),
IO => ext_hw_ram_io(i),
O => ext_hw_ram_data_in(i),
T => ram_we);
end generate mem1;