Я довольно новичок в ASP.NET MVC, я попытался найти решение для этого, но я не могу найти аналогичный пример, я прочитал, что это из-за того, что мои отношения равны нулю, когда это должно быть *. Я хочу, чтобы в моей таблице ProposalFB был встроенный первичный ключ электронной почты лектора (lecEmail) и электронной почты студента (studEmail), которые исходили из разных таблиц (Лектор и Студент), сначала я думал, что могу исправить это, если были данные в к сожалению, лектор и студенческий стол не работали. Всякий раз, когда я пытаюсь эшафот я получаю Композитный первичный ключ с двумя внешними ключами из двух разных таблиц mvc
Мои модели выглядеть следующим образом: Student.cs
public class Student
{
[Key]
public string studEmail { get; set; }
public string projectType { get; set; }
public string projectTitle { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> year { get; set; }
public virtual ProposalFB ProposalFB { get; set; }
}
Lecturer.cs
public class Lecturer
{
[Key]
public string lecEmail { get; set; }
public virtual ProposalFB ProposalFB { get; set; }
}
ProposalFB.cs
public class ProposalFB
{
[Key, ForeignKey("Student"), Column(Order = 0)]
public string studEmail { get; set; }
[Key, ForeignKey("Lecturer"), Column(Order = 1)]
public string lecEmail { get; set; }
public string feedback1 { get; set; }
public string feedback2 { get; set; }
public string feedback3 { get; set; }
public string feedback4 { get; set; }
public string feedback5 { get; set; }
public float proposalMark { get; set; }
public Nullable<System.DateTime> createdOn { get; set; }
public Nullable<System.DateTime> modified { get; set; }
public bool status { get; set; }
public virtual Student Student { get; set; }
public virtual Lecturer Lecturer { get; set; }
}
Очень ценю некоторые рекомендации относительно того, как исправить это
1. Клавиша Композитной, как правило, плохая идея. 2. Композитные клавиши, состоящие из внешних ключей, всегда * плохая идея. 3. Ключ (первичный или внешний) должен находиться в индексированном столбце, строки которого не слишком подходят. Длинный и короткий: просто добавьте хорошие персональные первичные ключи к своему столу и прекратите все это глупость. –
@ChrisPratt моя причина для того, чтобы отслеживать адрес электронной почты студента и преподавателей, который не повторяется в таблице «ProposalFB», есть ли более простой способ справиться с этим, чем моя предлагаемая модель? – Newbie
Несомненно. Просто добавьте уникальное ограничение для столбца. Не нужно быть ключом. –