Аннотации ключевых данных не работают при назначении отдельному частичному классу в моем веб-приложении razor с использованием efcore .netcore - PullRequest
0 голосов
/ 13 июля 2020

Я разрабатываю приложение в веб-приложениях razor (asp .netcore) и формирую таблицы db с помощью efcore.

Я выполнил db-scaffold для своей таблицы данных OnlineForms, который создал мой OnlineForms.cs Класс. Когда я непосредственно помещаю атрибут [key] поверх свойства formid в этом классе, я могу без проблем сохранять данные в таблице.

Но когда я перемещаю аннотацию данных [key] в частичный класс OnlineFormsValidation, который ссылается на OnlineForms через атрибут [ModelMetadataType], и ​​я пытаюсь сохранить данные; Я получаю сообщение об ошибке: «Тип сущности OnlineForm требует определения первичного ключа».

Аннотации Required корректно работают внутри класса OnlineFormsValidation, а аннотация [Key] - нет. 1008 * Заранее благодарю. Любая помощь будет принята с благодарностью.

OnlineForm.cs:

namespace VehicleTakeHomeApp.Data.Models
{
   public partial class OnlineForm {
       [Key] <== works if i put it here, but I want to move it to OnlineFormValidation.cs
       public int FormId { get; set; }
       public string EmployeeId { get; set; }
       public string Name { get; set; }
   }
}

OnlineFormValidation.cs:

using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;

namespace VehicleTakeHomeApp.Data.Models
{

    [ModelMetadataType(typeof(OnlineFormValidation))]
    public partial class OnlineForm
    {
    }

    public class OnlineFormValidation
    {
        [Key]  <== this annotation is not getting picked up, even though the Required annotations below it get picked up.
        public int FormId { get; set; }

        [Required(ErrorMessage = "Employee ID is required.")]
        public string EmployeeId { get; set; }

        [Required(ErrorMessage = "Name is required.")]
        public string Name { get; set; }
    }
}

1 Ответ

0 голосов
/ 13 июля 2020

Я закомментировал метод OnModelCreating в моем классе dbcontext. Этот метод содержит HasKey () из исходного db-scaffold.

Я раскомментировал метод OnModelCreating, и теперь мне не нужно добавлять аннотацию [Key] ни в один из классов, и он работает.

Это скорее обходной путь, чем решение, но он работает.

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