Я получаю конфликтующее сообщение об ошибке в таблице внешних ключей, однако раскрывающееся меню заполняет идентификатор категории курса, поле INT в виде числа, но столбец привязывается к InputText в виде строки вместо InputNumber , хотя я попытался использовать тип данных InputNumber на странице бритвы, это не сработало. Похоже, числа конвертируются в строку, отсюда ошибка или есть что-то, что я здесь делаю неправильно? Мне удалось ввести поля вручную без раскрывающегося меню, и оно работает, поэтому я думаю, что число преобразуется в строку.
Ошибка
System.Data.SqlClient .SqlException (0x80131904): оператор INSERT конфликтует с ограничением FOREIGN KEY "FK_Course_CourseCategory". Конфликт произошел в базе данных «ITMS», таблица «dbo.CourseCategory», столбец «CourseCategoryID»
Страница бритвы
<div class="col-12 row">
<label class="col-2 font-weight-bold">Course Title:</label>
<InputSelect @bind-Value="@newPerson.Course">
<option value="0">Select</option>
@foreach (var item in CourseCategories)
{
<option value="@item.CourseCategoryID">@item.Title</option>
}
</InputSelect>
<ValidationMessage For="@(() => newPerson.Course)" />
</div>
<div class="col-12 row">
<label class="col-2 font-weight-bold">Course Category ID:</label>
<InputText id="CourseCategoryID" @bind-Value="newPerson.Course" placeholder="CourseCategoryID" />
<ValidationMessage For="@(() => newPerson.CourseCategoryID)" />
</div>
Модель
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace BlazorDemoUI.Models
{
public class DisplaySchoolModel
{
public string CountryName { get; set; }
[Required]
public int SchoolID { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Location { get; set; }
[Required]
public string Address { get; set; }
[Required]
public string PostCode { get; set; }
public string CountryCode { get; set; }
[Required]
public int SchoolAdminPersonID { get; set; }
}
}
Таблицы:
CREATE TABLE [dbo].[CourseCategory]
(
[CourseCategoryID] [int] IDENTITY(1,1) NOT NULL,
[Code] [nvarchar](50) NOT NULL,
[Title] [nvarchar](50) NOT NULL,
[Summary] [ntext] NULL,
[Description] [ntext] NULL,
[Notes] [ntext] NULL,
[Duration] [smallint] NULL,
CONSTRAINT [PK_CourseCategory]
PRIMARY KEY CLUSTERED ([CourseCategoryID] ASC)
) ON [PRIMARY]
CREATE TABLE [dbo].[Course]
(
[CourseID] [int] IDENTITY(1,1) NOT NULL,
[CourseCategoryID] [int] NOT NULL,
[SchoolID] [int] NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Course] [nvarchar](50) NOT NULL,
[StartDate] [smalldatetime] NOT NULL,
[Duration] [int] NOT NULL,
[Seats] [int] NOT NULL,
[Notes] [ntext] NULL,
[PublicClass] [bit] NOT NULL,
[SeatsAvailable] [int] NOT NULL,
[Instructor] [nvarchar](50) NULL,
[IsCancelled] [bit] NOT NULL,
[ReasonForChange] [nvarchar](250) NULL,
[HasPrerequisite] [bit] NOT NULL,
[PrerequisiteName] [nvarchar](100) NULL,
CONSTRAINT [PK_Course]
PRIMARY KEY CLUSTERED ([CourseID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[Course] WITH CHECK
ADD CONSTRAINT [FK_Course_CourseCategory]
FOREIGN KEY([CourseCategoryID]) REFERENCES [dbo].[CourseCategory] ([CourseCategoryID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Course] CHECK CONSTRAINT [FK_Course_CourseCategory]
GO
ALTER TABLE [dbo].[Course] WITH CHECK
ADD CONSTRAINT [FK_Course_School]
FOREIGN KEY([SchoolID]) REFERENCES [dbo].[School] ([SchoolID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Course] CHECK CONSTRAINT [FK_Course_School]
GO