Я пытаюсь создать приложение в Mvc с индивидуальными учетными записями пользователей и пытаюсь связать автоматически сгенерированную базу данных с моим собственным контекстом.
Проблема, возникающая при попытке создать представление моего метода Create, вызывает следующее сообщение об ошибке:
Произошла ошибка при запуске выбранного генератора кода: «Невозможно
Получить метаданные для 'Projekt_Dejtingsida.Models.Messages' не
действительный. Свойство навигации ApplicationUser не найдено в
зависимый тип 'Projekt_Dejtsida.Models.Messages'. Значение имени
должно быть допустимым именем свойства навигации.
Пожалуйста, помогите новичку!
Вот модели, которые я использую:
Я уже попробовал метод protected override void OnModelCreating(DbModelBuilder modelBuilder)
, но он не работал ...
public class Messages {
[Key, ForeignKey("ApplicationUser")]
public string Id { get; set; }
[Key]
public int MessageId { get; set; }
public virtual ApplicationUser Sender { get; set; }
public virtual ApplicationUser Receiver { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "You can't send a message without a content")]
[StringLength(300, MinimumLength = 3, ErrorMessage = "Your message should be between 3 and 300 characters")]
public string MessageContent { get; set; }
}
public class FriendRequests {
public string UserId { get; set; }
[Key]
public int RequestId { get; set; }
public virtual ApplicationUser RequestTo { get; set; }
public virtual ApplicationUser RequestFrom { get; set; }
public bool Confirmed { get; set; }
}
public class Profile {
[Key]
public string UserId { get; set; }
public byte[] ProfilePicture { get; set; }
public string Firstname { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
public string City { get; set; }
public string About { get; set; }
public virtual ICollection<Messages> MyMessages { get; set; }
}
Вот DbContext:
public class DatesiteContext : DbContext {
public DatesiteContext() : base() { }
public DbSet<FriendRequests> Requests { get; set; }
public DbSet<Messages> Messages { get; set; }
public DbSet<Profile> Profiles { get; set; }
}
Вот MessageController
[Authorize]
public class MessageController : Controller
{
// GET: Message
public ActionResult Index()
{
var db = new DatesiteContext();
var userId = User.Identity.GetUserId();
var msgs = db.Messages.FirstOrDefault(m => m.Id == userId);
return View(new MessageViewModel {
Sender = msgs.Sender,
Receiver = msgs.Receiver,
MessageContent = msgs.MessageContent
});
}
public ActionResult Create(MessageViewModel model) {
DatesiteContext db = new DatesiteContext();
var userId = User.Identity.GetUserId();
var msgs = db.Messages.FirstOrDefault(m => m.Id == userId);
if (msgs == null) {
db.Messages.Add(new Messages {
Id = userId,
Sender = msgs.Sender,
Receiver = msgs.Receiver,
MessageContent = msgs.MessageContent
});
} else {
msgs.Sender = model.Sender;
msgs.Receiver = model.Receiver;
msgs.MessageContent = model.MessageContent;
}
db.SaveChanges();
return RedirectToAction("Index", "Profile");
}
}