1

Я довольно новичок в ASP.NET MVC, я попытался найти решение для этого, но я не могу найти аналогичный пример, я прочитал, что это из-за того, что мои отношения равны нулю, когда это должно быть *. Я хочу, чтобы в моей таблице ProposalFB был встроенный первичный ключ электронной почты лектора (lecEmail) и электронной почты студента (studEmail), которые исходили из разных таблиц (Лектор и Студент), сначала я думал, что могу исправить это, если были данные в к сожалению, лектор и студенческий стол не работали. Всякий раз, когда я пытаюсь эшафот я получаю enter image description hereКомпозитный первичный ключ с двумя внешними ключами из двух разных таблиц 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; } 
} 

Очень ценю некоторые рекомендации относительно того, как исправить это

+2

1. Клавиша Композитной, как правило, плохая идея. 2. Композитные клавиши, состоящие из внешних ключей, всегда * плохая идея. 3. Ключ (первичный или внешний) должен находиться в индексированном столбце, строки которого не слишком подходят. Длинный и короткий: просто добавьте хорошие персональные первичные ключи к своему столу и прекратите все это глупость. –

+0

@ChrisPratt моя причина для того, чтобы отслеживать адрес электронной почты студента и преподавателей, который не повторяется в таблице «ProposalFB», есть ли более простой способ справиться с этим, чем моя предлагаемая модель? – Newbie

+0

Несомненно. Просто добавьте уникальное ограничение для столбца. Не нужно быть ключом. –

ответ

1

Ваш объект ProposalFB представляет many-to-many связь между Student и Lecturer. Следовательно Student и Lecturer не могут иметь один пункт ProposalFB собственности, она должна быть коллекцией ProposalFB:

public class Student 
{ 
    // ... 
    public virtual ICollection<ProposalFB> ProposalFB { get; set; } 
} 

public class Lecturer 
{ 
    // ... 
    public virtual ICollection<ProposalFB> ProposalFB { get; set; } 
} 
+0

Это работало так, как ожидалось, и исправил эту проблему, которую я имел – Newbie

 Смежные вопросы

  • Нет связанных вопросов^_^