Как установить Guid Id пользователя для элемента, который он создает как внешний ключ? - PullRequest
0 голосов
/ 18 ноября 2018

Я создаю проект на ASP.Net для назначения, и у меня возникают проблемы с выяснением того, как добавить текущий вошедший в систему идентификатор пользователя, который является путеводителем в качестве внешнего ключа, чтобы знать, какие элементы они добавляют. Мне нужно сделать это, потому что, когда пользователь вошел в систему, он должен видеть только свои загруженные файлы.

Ниже приведен код, который я пробовал:

Уровень бизнес-логики:

    public void AddAudio(string title, string description, int genre, Guid userId, string filePath)
    {
        Audio i = new Audio();
        i.Title = title;
        i.Description= description;
        i.Genre_Id = genre;
        i.User.Id = userId;

        if (string.IsNullOrEmpty(filePath) == false)
            i.FilePath = filePath;

        new AudioRepository().AddAudio(i);
    }

Контроллер:

        public ActionResult Create(Audio i, HttpPostedFileBase fileData)
    {
        try
        {
            Logger.LogMessage("", Request.Path, "Entered the Create 
             Action");


            string uniqueFilename = Guid.NewGuid() + 
             Path.GetExtension(fileData.FileName);
            string absolutePath = Server.MapPath(@"\Audio") + @"\";
            fileData.SaveAs(absolutePath + uniqueFilename);




            i.FilePath = @"\Audio\" + uniqueFilename;


            new AudioBL().AddAudio(i.Title, i.Description,i.Genre_Id, 
             i.User.Id, i.FilePath);
            Logger.LogMessage("", Request.Path, "Finished adding the item in db");

            TempData["message"] = "Item added successfully";
            return RedirectToAction("Index");

        }

Я также добавил фотографию моей модели, чтобы вы могли лучше понять мой вопрос. : enter image description here

1 Ответ

0 голосов
/ 20 ноября 2018

Ваш код выглядит отлично когда вы делаете i.User.Id = userId;, что отношения если это не работает, возможно, ваша модель не подходит или данные неверны, Ваша модель должна быть примерно такой:

public class User
{
    [Key]
    public Guid Id { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public string Email { get; set; }

    public string Password { get; set; }

    public string NoOfAttempts{ get; set;}

    public string Mobile { get; set; }

    public bool Blocked { get; set; }

    public ICollection<Audio> Audios { get; set; }
}

public class Audio
{
    [Key]
    public Guid Id { get; set; }

    public string Genre_Id {get;set;}

    public string Title { get; set; }

    public string Description { get; set; }

    public string FilePath { get; set; }

    //FK
    public Guid UserId { get; set; }

    public virtual User User { get; set; }
}
...