Czy jest możliwość w #entityframework wykluczenia property typu prostego (tablica bajtów) żeby nie ściągało się automatycznie przy wyciąganiu obiektu? Najlepiej jakby trzeba było wykonać po prostu Include aby ściągnąć te property.
var x = db.Entity.Where(x => x.Costam).Select(x => ).FirstOrDefault() EF wtedy wygeneruje selecta wykorzystującego tylko kolumny, które w Select() bezpośrednio wywołasz. Nie znam sposobu, żeby wyciągnąć wszystko oprócz pojedycznego property
@MarcelFerry: A może w ten sposób? Jeżeli nie chcesz udostępniać wszystkich pól w konstruktorze lub/i setterach to można zrobić builder jako nested class.
public static IQueryable WithoutByteArray(this IQueryable source) => source.Select(b => new Book { Id = b.Id, Name = b.Name, //... });
@MarcelFerry: nie zrobisz tak z include bo include dotyczy kluczy. Musiałbyś mieć relacje jeden do jeden i określać czy chcesz czy nie ją pobrać. Weź opisz usecase po co tego nie ściągać, skoro to nie wydaje się duży koszt dla bazy może.
@MarcelFerry: Jak nie masz śledzenia zmian to możesz zrobić Select(x => new TwojeEncja(...)) Jak trackujesz zmiany to możesz rozbić jedną tabelę na dwie encje: obie encje muszą mieć ID takiego samego typu i wskazywać na te samą tabelę
@MarcelFerry: no to szczerze jeżeli nie zawsze musisz to zaktualizować ma to wydajnościowy sens również do query na bazie aby to była osobna tabela. Tylko dodaj index na kluczu i wsio.
#csharp #programowanie
var x = db.Entity.Where(x => x.Costam).Select(x => ).FirstOrDefault()
EF wtedy wygeneruje selecta wykorzystującego tylko kolumny, które w Select() bezpośrednio wywołasz. Nie znam sposobu, żeby wyciągnąć wszystko oprócz pojedycznego property
https://docs.microsoft.com/en-us/ef/core/querying/related-data/lazy
Plus tych encji mam około 500 na raz do update.
A może w ten sposób? Jeżeli nie chcesz udostępniać wszystkich pól w konstruktorze lub/i setterach to można zrobić builder jako
nested class
.public static IQueryable WithoutByteArray(this IQueryable source)
=> source.Select(b => new Book
{
Id = b.Id,
Name = b.Name,
//...
});
Jak trackujesz zmiany to możesz rozbić jedną tabelę na dwie encje: obie encje muszą mieć ID takiego samego typu i wskazywać na te samą tabelę