Entity Framework Core 2 автоматически сгенерированные столбцы - PullRequest
0 голосов
/ 25 октября 2018

У меня есть эта модель:

public class Model
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long ModelId {get;set;}
    public int Variable {get;set;}
 }

Я хочу, чтобы обе переменные автоматически увеличивались при добавлении.Если я добавлю [Key] или DatabaseGeneratedOption.Identity также в свойство Variable, EF Core скажет, что у вас не может быть 2 столбцов идентификаторов.

Я также пробовал с FluentAPI:

modelBuilder.Entity().Property(variable => variable).ValueGeneratedOnAdd();

но я все еще получаю ту же ошибку.

Как мне добавить 2 автоматически увеличиваемых значения при добавлении?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

SqlServer допускает только один столбец идентификаторов на таблицу.Но это позволяет вам определять и использовать столько последовательностей , сколько вы хотите:

Последовательность генерирует последовательные числовые значения в базе данных.Последовательности не связаны с конкретной таблицей.

Следуя приведенной выше ссылке на документацию EF Core, вы можете указать EF создать последовательность и использовать ее для своего столбца Variable следующим образом (как указано в документации,« Вы не можете настроить последовательность с помощью аннотаций данных» ):

modelBuilder.HasSequence<int>("VariableSequence");

modelBuilder.Entity<Model>().Property(e => e.Variable)
    .HasDefaultValueSql("NEXT VALUE FOR VariableSequence");
0 голосов
/ 25 октября 2018

Вы пытались ничего не ставить и сделать модель так:

 public class Model
 {    
    public long? ModelId {get;set;}

    public int? Variable {get;set;}
 }

И модель Builder:

 modelBuilder.Entity<Model>(entity =>
            {
                entity.HasKey(e => new { e.ModelId, e.Variable} )
                    .HasName("PK_Model");

            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...