@Got_Oxidus
Учусь

Как создать контроллер ASP.NET для БД?

Как создать контроллер для модели БД?

БД
/* Пользователи */
CREATE TABLE [dbo].[Users] (
    [UserID]    INT           NOT NULL,
    [Login]     NVARCHAR (25) NOT NULL,
    [Password]  NVARCHAR (25) NOT NULL,
    [FirstName] NVARCHAR (25) NOT NULL,
    [SurName]   NVARCHAR (25) NOT NULL,
    [LastName]  NVARCHAR (25) NULL,
    [Status]    NVARCHAR (25) NOT NULL,
    [Balance]   INT           NULL,
    PRIMARY KEY CLUSTERED ([Login] ASC, [UserID] ASC)
);


GO
CREATE UNIQUE NONCLUSTERED INDEX [UserID]
    ON [dbo].[Users]([UserID] ASC);

/* События */
CREATE TABLE [dbo].[Events] (
    [EventID]     INT            IDENTITY (1, 1) NOT NULL,
    [EventName]   NVARCHAR (50)  NOT NULL,
    [StartTime]   DATETIME       NOT NULL,
    [EndTime]     DATETIME       NOT NULL,
    [Description] NVARCHAR (150) NULL,
    [Reward]      INT            DEFAULT ((0)) NOT NULL,
    PRIMARY KEY CLUSTERED ([EventID] ASC)
);

/* Связующий элемент */ 
CREATE TABLE [dbo].[EventMember] (
    [UserID]  INT NOT NULL,
    [EventID] INT NOT NULL,
    PRIMARY KEY CLUSTERED ([UserID] ASC, [EventID] ASC),
    CONSTRAINT [[dbo]].[User]].[UserID]]] FOREIGN KEY ([UserID]) REFERENCES [dbo].[Users] ([UserID]),
    CONSTRAINT [[dbo]].[Events]].[EventID]]] FOREIGN KEY ([EventID]) REFERENCES [dbo].[Events] ([EventID])
);


Модель
59e655a99006f635611681.png
Создано автоматически
public partial class User
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public User()
        {
            this.EventMembers = new HashSet<EventMember>();
        }
    
        public int UserID { get; set; }
        public string Login { get; set; }
        public string Password { get; set; }
        public string FirstName { get; set; }
        public string SurName { get; set; }
        public string LastName { get; set; }
        public string Status { get; set; }
        public Nullable<int> Balance { get; set; }
        public int EventMemberUserID { get; set; }
        public int EventMemberEventID { get; set; }
        public int EventMemberUserID1 { get; set; }
        public int EventMemberEventID1 { get; set; }
    
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<EventMember> EventMembers { get; set; }
    }

public partial class EventMember
    {
        public int UserID { get; set; }
        public int EventID { get; set; }
    
        public virtual Event Event { get; set; }
        public virtual User User { get; set; }
    }

public partial class Event
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Event()
        {
            this.EventMembers = new HashSet<EventMember>();
        }
    
        public int EventID { get; set; }
        public string EventName { get; set; }
        public System.DateTime StartTime { get; set; }
        public System.DateTime EndTime { get; set; }
        public string Description { get; set; }
        public int Reward { get; set; }
    
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<EventMember> EventMembers { get; set; }
    }



При попытки создании контроллера с действиями чтения и записи со страницами появляется ошибка:
59e656899a2bc332213158.png

Как создать контроллер, что бы не было ошибки?
  • Вопрос задан
  • 545 просмотров
Решения вопроса 1
yarosroman
@yarosroman Куратор тега C#
C# the best
Вам необходимо поле-ключ, уникальное поле, которое будет идентифицировать запись, как выше сказали, добавьте свойство Id или если у вас свой идентификатор, то укажите его атрибутом [Key]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы