Stary post, chciałbym podzielić się tym, co znalazłem z Entity Framework 6.1.3.
Utworzono prostą bibliotekę warstw danych przy użyciu C# i .NET Framework 4.6.1, dodano prostą klasę repozytorium/usługi, pierwszą klasę kontekstową kodu i skierowałem mój plik web.config do lokalnej bazy danych SQL Express 2014.
W klasie encji dodałem następujące konstruktora atrybutu do kolumny ID:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
Potem stworzył nową migrację, wpisując w Visual Studio 2015 Package Manager:
Dodaj migracji
Nadaj nazwę migracji, a następnie poczekaj na utworzenie klasy DbMigtation. Edytować klasę i dodaj następujący CreateTable operacji:
CreateTable(
"dbo.Article",
c => new
{
Id = c.Guid(nullable: false, identity: true),
Title = c.String(),
Content = c.String(),
PublishedDate = c.DateTime(nullable: false),
Author = c.String(),
CreateDate = c.DateTime(nullable: false),
})
.PrimaryKey(t => t.Id);
}
Powyższa tabela jest przykładem kluczowym punktem jest tu następujący budowniczy adnotacja:
nullable: false, identity: true
Mówi EF do specifiy kolumnę jak nie nullabe i chcesz ustawić go jako kolumnę tożsamości, która zostanie zasiane przez EF.
uruchomienie migracji ponownie polecenia:
update-database
ten będzie wykonany klasę migracji najpierw spada w tabeli (metoda dół()), a następnie tworzenie tabeli (na() metoda).
Przeprowadź testy jednostek i/lub połącz się z bazą danych i uruchom zapytanie wyboru, powinieneś zobaczyć swoją tabelę w nowym formularzu, dodać dane wyłączając kolumnę Id, a powinieneś zobaczyć nowe Guid (lub dowolny wybrany typ danych) do wygenerowania.
Widziałem DatabaseGeneratedOption.Identity ale tbh Byłem leniwy i nie czytałem w nim, właśnie założyłem, że to zrobiło tę kolumnę pole PKey. Dzięki, oddam to. – JamesStuddart
Czy to nadal będzie działać z Multitenant Databases? – amd
@Ahmad Nie zadziała, jeśli każdy lokator ma swoje własne nasiono – Eranga