Radzicie sobie jakoś z migracjami EntityFrameworkCore na dalszym etapie rozwoju aplikacji? Wcześniej zmiany w bazie wprowadzałem dodając do projektu kolejne skrypty SQL i rozwijanie bazy było mniej złożone i mniej rzeczy mogło pójść źle.

#dotnet #entityframework #sql #programowanie
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Dworki: Niestety ale pewne podejścia narzucaja pewne ograniczneia z kórymi się trzeba pogodzić. Takie hotfixy powinny być rzadkie wiec jeśli nawet jest spory narzut pracy związany z dodaniem ich potem do deva to ja bym to zakaceptował.
  • Odpowiedz
Hejka mam pytanie. Piszę test jednostkowy w xunity handlera, który usuwa rekord zmieniając status.Jak mam zrobić mocka dbcontext aby przetestować handler z metodą Attach(), ponieważ obecnie dla mocka ctx zwraca nulla. Natomiast jak zrobię ctx.Departments.Find() to zwraca poprawny rekord i potem mogę użyć Remove.

var depState = ctx.Departments.Attach(dep);
depState.State = EntityState.Deleted;
ctx.SaveChangesAsync

#dotnet #csharp #programowanie #entityframework
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@smalczyk1: to co testujesz powinno być testem integracyjnym aplikacja - baza na działającej infrastrukturze. Testowanie tego mockując zależność od DB boli na co sam zwracasz uwagę - jakieś to takie, dziwne, trudne, nienaturalne.
Twój test tak naprawdę nie daje Ci żadnej pewności, że twój kod dobrze działa.
1. Sprawdzasz czy Attach działa? Do tego testy napisali twórcy EFa.
2. Sprawdzasz czy można przypisać "Deleted" do State? Jak wyżej.
3. Sprawdzasz czy SaveChangesAsync działa? Znowu jak
  • Odpowiedz
@smalczyk1: W skrócie, na podstawie tego co napisałeś, wydaje się że wystarczy Ci jeden test integracyjny gdzie usuniesz jakiś konkretny resource i w tym samym teście sprawdzisz że go już tam nie ma (i zrobisz to wołając swoją działającą aplikację, która gada do działającej bazy danych).
Test integracyjny pokryje Ci działanie handlera i komunikację aplikacja-baza w tym konkretnym przypadku.

W bardzo wielkim skrócie:
1. unit testy najlepiej nadają się do sprawdzania zakodowanego procesu
  • Odpowiedz
To akurat repository pattern, walidacja (nie ma osobnego dewelopera, który się nią zajmuje) tego guid odbywa sie w innym miejscu

public void CreateTruckForCoworker(Guid coworkerId, Truck truck)
{
truck.CoworkerId = coworkerId;
Create(truck);
}
  • Odpowiedz
Szybkie pytanko dla expertów #csharp
EF Core 6.0.8, mariadb najnowsza.

1. Jak ustawić żeby nazwy tabel były bez końcówki "s" tylko tak jak jest nazwana klasa np. Car to w bazie Car a nie Cars.
Z tego co rozumiem mogę ustawić ręcznie dla każdej tabeli ale czy jest jakiś sposób w której ustawianie to dla wszystkich na raz?

2.
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Fallinghammer: dzięki, styl z _ i małymi literami rozwiazuje sprawę, nie ma co drążyć tematu,

A jeszcze jedno,
mam 2 pola DateTime i ustawiam jendmu wartość DataTime.UtcNow a drugiemu DateTime.Now i zapisuje encje do bazy.
Uruchamiam HediSQL i widzę, że mam przesunięcie 2 godziny do tyłu w kolumnie w której zapisałem UtcNow.

Chciałbym móc w programie pracować tylko na UTC i żeby ef core sobie to zamieniał przynajmniej przy zapisie
  • Odpowiedz
@MarcelFerry:

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
  • Odpowiedz
@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 =>
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@100x: w graphql jest tak że jak zwracasz quarable to wystarczy dodać atrybut do endpointa i sam robi stronicowanie/sortowanie
  • Odpowiedz
Humble Bundle z książkami wydawnictwa Apress. Głównie o technologiach związanych z .NET, ML.NET, Cpłotek, TypeScript, Azure, Github.

26 książek za £14!

Pełna lista:

Practical
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Hektorrr: Dodam, że zestaw tych wszystkich książek normalnie wyceniony jest na £1,119.85.
Tak więc £14 funtów to prawie jak za darmo a jak wiadomo za darmo to uczciwa cena.
  • Odpowiedz
@vanguard2727: Po to żeby nie powtarzać deklaracji propert takich jak id. Entity jest abstrakcyjną klasą. Nie reprezentuje żadnej tabeli. Ucz się z materiałów M$ najlepiej w języku angielskim.
  • Odpowiedz
@grap32: NHibernate widziałem tylko w starych projektach które mają powyżej 10 lat. Ef Core jest standardem. Można jeszcze brać pod uwagę dapper ale to jest mikro orm.
  • Odpowiedz
Co oznacza duża litera N w tym zapisie? Dodatkowo co oznacza NOCOUNT ON? Jest to nieco dziwne. To wynik z SQL Server Profilera. Ponoć nie ma głupich pytań.

exec sp_executesql N'SET NOCOUNT ON;
UPDATE [CarCompanies] SET [Brand] = @p0
WHERE [CarCompanyId] = @p1
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@vanguard2727: Możesz pominąć. Na rozmowie kwalifikacyjnej Cię mogą zapytać o to i wystarczy, że będziesz kojarzył temat.

Jeśli chodzi o performance EF, to ważniejsze na początek jest np wiedzieć, kiedy używasz Lazy Loadingu vs Eager loading, co robi AsNoTracking,, jak zrobić BulkInsert
  • Odpowiedz
Mam bazę w PostgreSQL. Instaluję drivery przez nuget i plugin do integracji z Visual studio.
Tworzę plik edmx przez database first z istniejącej bazy danych. Wszystko fajnie działa.
W PostgreSQL nazywam kolumny: nazwakolumny np. userid.

1. Czy da się jakoś zrobić żeby automatycznie nawet przy aktualizacji edmx została ustawiona nazwa UserId w c# a w bazie zostało user_id? Mogę ręcznie zrobić to przez fluentApi ale chciałbym uniknąć
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kazik-: co to sprzedawcy garnków wzięli się za wciskanie ludziom kursów z programowania?
"Tylko dzisiaj za jedyne 6 stów dostaniesz komplet garnków i materac o łącznej wartości 4300" :D
  • Odpowiedz
Hej,
w jakis sposob aktualizujecie DBmodels w Waszych apkach?
Mam lokalna baze, po zmianach robie w bashu:

dotnet ef dbcontext scaffold --use-database-names "server=localhost\SQLEXPRESS;Initial Catalog=XXX;Integrated Security=True;" Microsoft.EntityFrameworkCore.SqlServer -o DBModels -t nazwaTabeli1 -t nazwaTabeli2 -t nazwaTabeli3 -f

I
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@inrain88: Tak jak napisali koledzy wyżej, code-first i migracje.
Początkowo mieliśmy database first, ale w momencie gdy projekt i model się mocno rozrosły to nieprzewidywalne zachowanie plików .edmx (szczególnie przy mergowaniu branchy) stało się mocno uciążliwe i przeszliśmy na code-first.
  • Odpowiedz
Cześć!

Właśnie opublikowałem nowy odcinek na youtube, w którym przybliżę temat testów automatycznych dla Programistów C#. Dowiesz się czym są testy automatyczne, jakie są rodzaje testów automatycznych, jakie są ich wady i zalety oraz jak pisać je w C#.

Link: https://www.youtube.com/watch?v=xWOsOtvVsxg

Oprócz
kazik- - Cześć! 

Właśnie opublikowałem nowy odcinek na youtube, w którym przybliżę...

źródło: comment_1627566624QNDVgv5nvALLgGKoi79w8A.jpg

Pobierz
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@grap32: to sa właśnie mikroserwisy.

Często są też ogromne bazy danych dla wielu serwisów (np. agregujące najważniejsze dane), ale raczej nie stosuje się bezpośredniego 'dojscia' do samej bazy, a udostępnia wybrane dane przez jakieś API.
  • Odpowiedz
5 NAJCZĘSTSZYCH BŁĘDÓW w Entity Framework Core

Cześć! Jest już nowy odcinek na kanale modestprogrammer na youtube. Z tego odcinka dowiesz się jakie są najpopularniejsze błędy początkujących programistów przy pracy z Entity Framework Core w C#. Przedstawię Ci 5 najczęstszych błędów na które musisz uważać. Miłego oglądania

Link: https://www.youtube.com/watch?v=6r2S3XhGVl8

#programowanie #programista #nauka #naukaprogramowania #programista15k #csharp #dotnet #entityframework
kazik- - 5 NAJCZĘSTSZYCH BŁĘDÓW w Entity Framework Core

Cześć! Jest już nowy odcin...

źródło: comment_16271926566xokLL00CgnqHOe7OVXBi8.jpg

Pobierz
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach