Старое сообщение подумал, что я поделился тем, что нашел с Entity Framework 6.1.3.
Я создал простую библиотеку слоев данных с использованием C# и .NET Framework 4.6.1, добавил простой класс репозитория/службы, первый контекстный класс кода и указал мой файл web.config на локальную базу данных SQL Express 2014.
В классе сущности я добавил следующий конструктор атрибута в столбце Id:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
Затем я создал новую миграцию, введя в Visual Studio 2015 диспетчера пакетов:
Add-Migration
Дайте миграции имя, а затем дождитесь создания класса DbMigtation. Измените класс и добавьте следующую CreateTable операцию:
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);
}
Приведенная выше таблица является примером Ключевым моментом здесь является следующий строитель аннотаций:
nullable: false, identity: true
Это говорит EF, чтобы specifiy столбец не nullabe и вы хотите установить его как столбец идентификатора, который будет высечен EF.
Выполнить миграцию снова с помощью следующей команды:
update-database
Это будет работать класс миграции сбросив таблицу первой (метод вниз()), то создание (метод Up()) таблицы.
Запустите свои модульные тесты и/или подключитесь к базе данных и запустите запрос выбора, вы увидите свою таблицу в новой форме, добавьте некоторые данные, исключая столбец Идентификатор, и вы увидите новое руководство (или любой другой тип данных, который вы выбираете).
Я видел DatabaseGeneratedOption.Identity, но tbh Я был ленив и не читал в него, я просто предположил, что он сделал этот столбец полем PKey. Спасибо, я отдам его. – JamesStuddart
Будет ли это работать с базами данных Multitenant? – amd
@Ahmad Это не сработает, если у каждого арендатора есть свое собственное семя. – Eranga