Как мы добавляем внешний ключ в удостоверение asp.net MVC Project - PullRequest
0 голосов
/ 05 мая 2018

Класс ApplicationUser, который наследуется с IdentityUser

public class ApplicationUser : IdentityUser
{

    public DateTime BirthDate { get; set; }
    public string User_type { get; set; }
    public DateTime CreatedOn { get; set; }
    public Enums.Sex Gender { get; set; }
    public bool IsActive { get; set; }
    public virtual Patient Patients { get; set; }
    public int PatientID { get; set; }

}

Класс пациента

public class Patient
{
    [Key]
    public int PatientID { get; set; }
    public string ProfilePicture { get; set; }
    public string FName { get; set; }
    public DateTime BirthDate { get; set;}
    public string City { get; set; }
    public string Country { get; set; }

}

Контроллер

 public async Task<ActionResult> RegisterPatient(RegisterViewModel model)
    {

        MYDb db = new MYDb();
        Patient pt = new Patient();
        pt.BirthDate = model.BirthDate;
        pt.City = model.City;
        pt.Country = model.Country;
        pt.ProfilePicture = model.ProfilePicture;
        pt.FName = model.FName;
        int Pat_id = model.PatientID;
        if (ModelState.IsValid)
        { 
            ApplicationUser myuser = new ApplicationUser();
            model.CreatedOn = DateTime.Now;
            model.IsActive = true;
            myuser.PatientID = Pat_id;
            if (ModelState.IsValid)
            {
                var user = model.GetUser();
                db.Patients.Add(pt);
                db.SaveChanges();
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                { 
                    var idManager = new IdentityManager();
                    idManager.AddUserToRole(user.Id, model.User_type);
                    //await db.SaveChangesAsync();
                    await SignInAsync(user, isPersistent: false);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    AddErrors(result);
                }
            }

            return RedirectToAction("Index", "Home");
        }

        // If we got this far, something failed, redisplay form
        return View();
    }

я хочу сначала установить отношения между пациентом и пользователем приложения добавить запись в пациента, а затем "Patient_ID", используемый в качестве внешнего ключа в ApplicationUser Table, но при добавлении данных я сталкиваюсь с этим типом ошибки

Error

enter image description here

Примечание: данные сохраняются в таблице пациентов , но не в таблице ApplicationUser , поскольку ApplicationUser не получает " PatientID ", поэтому в БД возник конфликт.

Надеюсь, это очень ясно и не так легко решить :(

1 Ответ

0 голосов
/ 05 мая 2018

В аппликационной модели пользователя. Пишите, сделайте это:

public class ApplicationUser : IdentityUser
{
    public DateTime BirthDate { get; set; }
    public string User_type { get; set; }
    public DateTime CreatedOn { get; set; }
    public Enums.Sex Gender { get; set; }
    public bool IsActive { get; set; }
    [ForeignKey("PatientID")] 
    public virtual Patient Patients{ get; set; }
}

Я думаю, что это будет работать.

...