Имах подобен проблем и го реших, като промених опцията за сливане на ObjectSet. Пример:
using (TargetDBDataContext db = new TargetDBDataContext())
{
db.SomeView.MergeOption = System.Data.Objects.MergeOption.NoTracking;
return db. SomeView.ToList();
}
Изглежда, че рамката на обект (EF) не обработва правилно изгледи, които имат дублирани първични ключове или изобщо нямат първични ключове. Така че, когато има два реда, които EF счита за равни, EF ще зареди първия ред, както трябва, но няма да зареди втория ред, защото ще счита, че вече е зареден.