Pominięcie nieistniejącej kolumny podczas wstawiania

0

Witam.
Czy jest opcja, aby EF Core pominął kolumnę podczas insertu, która nie istnieje? Taki problem występuje w przypadku różnych wersji baz systemu ERP. Tworzę API do najnowszej wersji i klient końcowy może nie mieć niektórych kolumn.

0

Ale jaki masz konkretnie problem? Nie masz tej kolumny w tabeli na bazie czy w danych ktore insertujesz?

0

Nie mam kolumny w tabeli na bazie, ale mam w modelu.

1

Moim zdaniem się nie da. Jak masz już zbudowany model to musisz z nim żyć. Pozostaje budować różne modele dla odpowiednich wersji. Wywalić zapytania do jakiejś konfiguracji i tam je parametryzować. Budować zapytania przy starcie aplikacji na podstawie tego, co masz w DB. Ale nawet jak ogarniesz temat komunikacji z DB to wszędzie gdzie będziesz korzystał z tej kolumny to musisz robić ifologię.

0

modelBuilder.Entity<MyEntity>().Ignore(c => c.KolumnaDoZignorowania);

0

@szydlak: Ja nie wiem, którą mam zignorować. Różne wersje, różne kolumny.

1

Wersjonuj sobie modele od klienta i API. Napisz mapper, który zmieni ci wersję x modelu na najnowszy działający z bazą danych.

2

Entity Framework check if column exists during OnModelCreating

Problem dotyczy wielu encji? Czy tylko jednej?

Jeżeli nazwy nie są zdefiniowane przez fluent api, tylko nazwy column odpowiadają 1:1 z nazwami w bazie, ewentualnie były używane adnotację Column - to w łatwy sposób można przejechać refleksją i sprawdzić wszystkie właściwości.

Edit:

Ewentualnie zamiast refleksji można spróbować (i nie trzeba się martwić fluent api):

Get column name

0

@Wilktar:
EF Core ma ExecuteSqlRaw, które nie jest generyczne. Problem może dotyczyć wielu tabel. Na tę chwilę sypnęło mi błędem na jednej, jak podpiąłem się (przypadkowo) do "starej" bazy, której nie konwertowałem po aktualizacji systemu ERP.

Na tę chwilę będę musiał wygenerować modele na podstawie wersji klienta. Te "dodatkowe" kolumny w najnowszej wersji są nullable, więc jak zrobią update to i tak tam z API wpadnie null, więc "w drugą" stronę będzie działać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1