Mam następującą sytuację i nie można ustalić prawidłowej strategii migracji. Pomoc jest doceniana.Pierwsza strategia dotycząca kodu źródłowego jednostki Entity z istniejącą bazą danych
- Aplikacja tworzy i wykorzystuje bazę danych do przechowywania danych
- Aplikacja wymaga aktualizacji bazy danych po uruchomieniu jeśli potrzebne
- wykorzystaniem konsoli Menedżer Nuget nie jest opcją. (Dla celów migracji, lokalnie bez problemu)
- I Have istniejącej bazy danych w dystrybucji, które nie są EF
Teraz chcę zacząć używać kodu EF pierwsze podejście. Co muszę osiągnąć to:
- Jeśli nie ma w bazie, a następnie utworzyć jeden
- Jeśli baza danych istnieje użytku pusty migracji (tylko będą gotowe do kolejnych uaktualnień)
- powinno się na wniosek rozpocząć
Database nie istnieje ====> Tworzenie EF Initial =====> UPG v1 =====> Upg V2
baza danych istnieje =====> Przejdź początkowe, ale być gotowe do kolejne aktualizacje =====> Upg v1 ======> Upg v2
Dzięki za pomoc
Dodatkowe informacje: Jest to baza danych, która istnieje (tylko przykład):
CREATE DATABASE Test
GO
Use Test
GO
CREATE SCHEMA [TestSchema] AUTHORIZATION [dbo]
GO
CREATE TABLE [TestSchema].[Table1](
[Id] [uniqueidentifier] NOT NULL,
[Column1] [nvarchar](500) NOT NULL,
[Column2] [bit] NOT NULL,
[Column3] [bit] NOT NULL,
CONSTRAINT [PK_MonitorGroups] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Korzystanie z reverse engineering EF stworzył wstępną migracji:
public partial class Initial : DbMigration
{
public override void Up()
{
CreateTable(
"TestSchema.Table1",
c => new
{
Id = c.Guid(nullable: false),
Column1 = c.String(nullable: false, maxLength: 500),
Column2 = c.Boolean(nullable: false),
Column3 = c.Boolean(nullable: false),
})
.PrimaryKey(t => t.Id);
}
public override void Down()
{
DropTable("TestSchema.Table1");
}
}
jeśli używam kodu dostarczonego przez @spender przeciwko nieistniejącej bazie danych wszystko jest w porządku . Jeśli korzystam z istniejącej bazy danych, działa ona dopóki nie zmienię modelu (następna migracja).
To, co widziałem, to że skrypt aktualizacji zwracany przez migrację zawiera całe tworzenie bazy danych. I nie można go wykonać na już istniejących obiektach.
W rzeczywistości można dodać tabelę migracji do istniejącej bazy danych i dodać dane początkowe, ale nie jestem pewien, czy jest to dobre rozwiązanie.
Więc chcesz pozwolić społeczności na wykonanie pracy nad projektem. –
@Farhad nie, po prostu potrzebuję małej pomocy :) – Adi
To jest w porządku;) –