C# и EF не может вставить NULL в столбец Id - PullRequest
2 голосов
/ 20 января 2020

У меня есть сущность в C#, в которой есть столбец Id. Это первичный ключ. Но я не должен иметь это как столбец идентичности. Я хочу присвоить значение столбцу Id в моем коде в C#. Entity:

    public class MasterReview
        {
            public int Id { get; set; }

В базе данных у меня есть столбец Id, спецификация идентичности установлена ​​как нет. В C#, когда я добавляю новую сущность, я устанавливаю значение в Id:

    public void Add(int reviewId, string title, string language, string assignee)
            {
                using (var uow = unitOfWorkFactory.CreateUnitOfWork())
                {
                    uow.MasterReviewRepository.Add(new Models.MasterReview()
                    {
                        Id = reviewId,
                        Title = title,
                        Language = language,
                        Assignee = assignee
                    });

                    uow.Save();
                }
            }

И когда я вызываю uow.Save, я получаю ошибку:

Невозможно вставить значение NULL в столбец «Id», таблица «MyApp.dbo.MasterReview»; столбец не допускает пустых значений. Ошибка INSERT.

Значение установлено, не пусто. Сейчас 3.

enter image description here

1 Ответ

4 голосов
/ 20 января 2020

Попробуйте добавить DatabaseGeneratedOption.None аннотацию

public class MasterReview
{
   [DatabaseGenerated(DatabaseGeneratedOption.None)]
   public int Id { get; set; }
}

или, если вы используете FluentAPI

modelBuilder.Entity<MasterReview>().Property(t => t.Id)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

DatabaseGeneratedOption.None, указывает, что значение свойства не будет сгенерировано базовая база данных. Поэтому используйте его, если вы хотите предоставить свои собственные значения для свойств идентификатора вместо сгенерированных базой данных значений

Но обратите внимание: EF будет выдавать исключение, если вы не предоставляете уникальные значения каждый раз, когда Id является первичным ключевое свойство.

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