Работал как шарм. Пока занимаюсь экспериментами. Я добавил другое свойство на класс Реферал. Но я никогда не менял ApplicationUser. Мне нужно было добавить другое свойство там же.
чаю ASP.Net MVC 5, и я застрял с одной базовой конструкции БД. Итак, у меня есть один пользователь, который может отсылать много людей на работу. Кроме того, многие могут подать заявку, чтобы получить рекомендацию. Я создал две роли и обо всем позаботился. Теперь у меня на занятииНаправления который будет отслеживать каждый экземпляр реферала, который должен быть сделан.
Модель реферала:
Public class Referral
{
[Key]
public int ReferralId { get; set; }
public Company Company { get; set; }
public int CompanyId { get; set; }
public ApplicationUser User { get; set; }
public string CandidateId { get; set; } // Application User ID of person asking for referral
public string ReferrerId { get; set; } // Application user ID of person referring the candidate
}
ApplicationUser Model
public class ApplicationUser : IdentityUser
{
public ICollection<Referral> Referrals { get; set; }
// rest prop removed for brevity sake
}
Теперь предположим, что A (реферер) относится к B (кандидату). Строка моей таблицы будет выглядеть ниже.
ReferralId CompanyId CandidateId ReferrerId
1 1 B A
Все идет нормально. Но я хочу установить отношения ФК на Реферальной таблице. Я новичок в Fluent API, но я попробовал, как показано ниже.
// one candidate can have many referrals
dBModelBuilder.Entity<ApplicationUser>()
.HasMany(u => u.Referrals)
.WithRequired(u => u.User)
.HasForeignKey(u => u.CandidateId)
.WillCascadeOnDelete(false);
//one referrar can have many referrals
dBModelBuilder.Entity<ApplicationUser>()
.HasMany(u => u.Referrals)
.WithRequired(u => u.User)
.HasForeignKey(u => u.ReferrerId);
Но EF уважает только одно отношение. Почему оба отношения внешнего ключа не устанавливаются. Если я закомментирую одно, то другое сработает, и наоборот. Но держать их вместе, как показано, никогда не работает.
Ожидаемое поведение: я ожидал двух отношений ФК Если у меня есть это, я могу работать соответственно. Пожалуйста, ведите меня сюда. Я новичок во всем этом.