Правилно сте избягали от името на db файла, но не и от източника на данни, поради което той се опитва да се свърже с източник на данни с име "(localdb)11.0", който (най-вероятно) не съществува.
Опитайте да го избягате правилно по следния начин:
SqlConnection cn = new SqlConnection("Data Source=(localdb)\\v11.0;"+
"Initial Catalog=MyDB; Integrated Security=True; "+
"MultipleActiveResultSets=True; AttachDbFilename=D:\\Products.mdf");