Entity Framework Core 5 to świetny ORM i uwielbiam jego wydajność oraz zwięzłość. Po włączeniu mechanizmu migracji można wygenerować następną migrację na podstawie zmian poczynionych w modelu. To bardzo użyteczne, ale jeśli chodzi o inne obiekty bazy danych, musisz poradzić sobie samemu. To znaczy – nadal możesz korzystać z migracji, ale musisz sam wymyślić instrukcję SQL. Rzućmy okiem na kilka fajnych instrukcji, których możesz użyć z bazą danych SQL Server.
CREATE OR ALTER
Jest to bardzo potężne polecenie, które dosłownie sprawdza, czy obiekt bazy danych istnieje i zmienia go lub tworzy nowy na podstawie tego faktu.
Więc zamiast pisać takie polecenie:
IF OBJECT_ID('UpdateProfilesCountry', 'P') IS NOT NULL DROP PROC UpdateProfilesCountry GO CREATE PROCEDURE [dbo].[UpdateProfilesCountry] @StardId int AS BEGIN SET NOCOUNT ON; UPDATE Profiles SET Country = 'Poland' WHERE LEFT(TelNo, 2) = '48' AND Id > @StardId END
Mogę użyć CREATE OR ALTER, w ten sposób:
CREATE OR ALTER PROCEDURE [dbo].[UpdateProfilesCountry] @StardId int AS BEGIN SET NOCOUNT ON; UPDATE Profiles SET Country = 'Poland' WHERE LEFT(TelNo, 2) = '48' AND Id > @StardId END
Dodatkowo, CREATE OR ALTER nie resetuje uprawnień, więc nie musisz ich ponownie dodawać, co byłoby konieczne w przypadku pierwszego skryptu.
CREATE OR ALTER może być używany z następującymi obiektami:
- STORED PROCEDURES (w tym skompilowane natywnie)
- FUNCTIONS (Transact-SQL, w tym skompilowane natywnie)
- TRIGGERS
- VIEWS
Inne obiekty bazy danych, takie jak tabele lub indeksy, nie mogą być obsługiwane za pomocą tej instrukcji. Więcej informacji na ten temat można znaleźć w tym poście Microsoft-u.
Uwaga: CREATE OR ALTER jest dostępne w SQL Server od wersji 2016 SP1.
DROP IF EXISTS
DROP IF EXISTS to przydatna instrukcja, której można użyć w przypadku wielu obiektów bazy danych. Sprawdzi, czy obiekt istnieje, a jeśli tak, usunie go – wszystko w jednej instrukcji.
Zamiast pisać następujące polecenie:
IF OBJECT_ID('dbo.Products', 'U') IS NOT NULL DROP TABLE dbo.Products;
Mogę napisać takie, jednolinijkowe
DROP TABLE IF EXISTS dbo.Products
Czyste i proste. DROP IF EXISTS będzie działać dla wielu obiektów bazy danych, takich jak:
- AGGREGATE
- ASSEMBLY
- VIEW
- DATABASE
- DEFAULT
- FUNCTION
- INDEX
- PROCEDURE
- ROLE
- RULE
- SCHEMA
- SECURITY POLICY
- SEQUENCE
- SYNONYM
- TABLE
- TRIGGER
- TYPE
- USER
- VIEW
Możesz przeczytać o tym więcej w tym poście Microsoft-u. Zwróć uwagę także, że DROP IF EXISTS jest dostępna w SQL Server od wersji 2016.
Mam nadzieję, że ci się spodoba, może masz jakieś instrukcje SQL, które uznasz za przydatne w pracy? Daj mi znać lub zostaw komentarz. Pozdro! 😉