Использование CheckBoxFor с таблицей поиска SQL
Я новичок в MVC, и я пытаюсь создать список флажков для моих данных. У меня есть 3 таблицы:
CREATE TABLE [dbo].[Competency] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Icon] VARCHAR (5) NOT NULL,
[Description] VARCHAR (50),
PRIMARY KEY CLUSTERED ([Id] ASC)
);
CREATE TABLE [dbo].[User] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] VARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
CREATE TABLE [dbo].[UserCompetency] (
[UserId] INT NOT NULL,
[CompetencyId] INT NOT NULL,
PRIMARY KEY CLUSTERED ([UserId] ASC, [CompetencyId] ASC),
CONSTRAINT [FK_UserCompetency_ToCompetency] FOREIGN KEY ([CompetencyId]) REFERENCES [dbo].[Competency] ([Id]),
CONSTRAINT [FK_UserCompetency_ToUser] FOREIGN KEY ([UserId]) REFERENCES [dbo].[User] ([Id])
);
Итак, у меня есть список компетенций и пользователей, и у каждого пользователя может быть ноль или более этих компетенций.
EntityFramework создал мой класс User следующим образом:
public partial class User
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public User()
{
this.Competencies = new HashSet<Competency>();
}
public int Id { get; set; }
public string Name { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Competency> Competencies { get; set; }
}
В MVC и Razor я пытаюсь создать CheckBoxList, чтобы пользователь мог выбирать, какие компетенции подходят для каждого пользователя. Пользователь Create.cshtml содержит этот код:
@foreach(Competency comp in Competencies)
{
@Html.CheckBoxFor(model => model.Competencies.Contains(comp))
@Html.DisplayFor(model => comp.Icon, new { Title = comp.Description })
}
Я получаю ошибку:
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
на линии с CheckBoxFor.
Я понимаю, что использование CheckboxFor должно быть связано с логическим полем в модели, которого у меня нет, так как это получение данных из справочной таблицы.
Я хотел бы избежать изменения модели, созданной EntityFramework, потому что тогда всякий раз, когда она обновляется, я должен был бы помнить, чтобы повторно внести изменения.
Кто-нибудь знает, как я могу заставить CheckBoxFor работать при обращении к справочной таблице, которая не связана с изменением моей модели?