Używam struktury entity do łączenia się z bazą danych. Mam jeden mały problem:Odzyskiwanie obiektu z elementu entityframework bez pola ONE
Mam jedną tabelę, która ma jedną kolumnę varbinary (MAX) (z filestream).
Używam polecenia SQL do zarządzania częścią "Dane", ale EF do reszty (metadane pliku).
Mam jeden kod, który musi uzyskać wszystkie pliki id, nazwa pliku, guid, data modyfikacji, ... pliku. Nie wymaga to w ogóle pola "Dane".
Czy istnieje sposób na odzyskanie listy, ale bez wypełnienia tej kolumny?
Coś
context.Files.Where(f=>f.xyz).Exclude(f=>f.Data).ToList();
??
Wiem, że mogę tworzyć anonimowe obiekty, ale muszę przekazać wynik do metody, więc żadnych anonimowych metod. I nie chcę umieszczać tego na liście typu anonimowego, a następnie utworzyć listę mojego nieanonimicznego typu (plik).
Celem jest, aby tego uniknąć:
using(RsSolutionsEntities context = new RsSolutionsEntities())
{
var file = context.Files
.Where(f => f.Id == idFile)
.Select(f => new {
f.Id, f.MimeType, f.Size, f.FileName, f.DataType,
f.DateModification, f.FileId
}).FirstOrDefault();
return new File() {
DataType = file.DataType, DateModification = file.DateModification,
FileId = file.FileId, FileName = file.FileName, Id = file.Id,
MimeType = file.MimeType, Size = file.Size
};
}
(używam tutaj typ anonimowy, bo inaczej dostaniesz NotSupportedException: jednostki lub typu złożonego „ProjectName.File” nie może być wykonana w sposób . LINQ podmiotom zapytania)
(np kod rzucać poprzedni wyjątek:
File file2 = context.Files.Where(f => f.Id == idFile)
.Select(f => new File() {Id = f.Id, DataType = f.DataType}).FirstOrDefault();
i „Plik” jest typem uzyskać z context.Files.ToList()
. Jest to dobra klasa:
using File = MyProjectNamespace.Common.Data.DataModel.File;
plik jest znaną klasą moim EF datacontext:
public ObjectSet<File> Files
{
get { return _files ?? (_files = CreateObjectSet<File>("Files")); }
}
private ObjectSet<File> _files;
Czy możesz usunąć tę kolumnę z obiektu EF? – Gabe
Chciałbym móc, ale to jest kolumna "NON NULL", a EF nie podoba się, gdy mam kolumnę inną niż null, które nie są w modelu – J4N
Jedynym powodem, dla którego EF miałby problem z wykluczonymi kolumnami innymi niż zero jest podczas 'INSERT' do bazy danych. Możesz obejść to, używając procedur, wyzwalaczy i innych metod. Dla "SELECT" absolutnie ** można ** wykluczyć kolumny tabeli. – Yuck