Как установить IdentityUser как ForeignKey? - PullRequest
0 голосов
/ 28 декабря 2018

Это мой класс вкратце:

public class UploadFile
{

    public int Id { get; set; }
    public TinyBlog2User User { get; set; } //this user is extend from IdentityUser
    public byte[] md5 { get; set; }
    public string Uri { get; set; }
    public string ThumbnialUri { get; set; }
}

Затем я загружаю файл и сохраняю URL-адрес файла в базе данных следующим образом:

 UploadFile uploadedFile = new UploadFile()
                        {
                            md5 = md5Value,
                            Uri = fileBlob.Uri.ToString(),
                            User = currentUser,
                            ThumbnialUri = thumbnailBlob.Uri.ToString()
                        };

                        _dbContext.uploadFiles.Add(uploadedFile);

                        _dbContext.SaveChanges();

Но в моей таблице uploadFile 'Столбец userId 'всегда нулевой.Я новичок в ASP.NET Core. Скажите, что не так с моим кодом?Большое спасибо!

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Напишите вашу UploadFile модель следующим образом:

public class UploadFile
{

    public int Id { get; set; }
    public string UserId { get; set; } 
    public byte[] md5 { get; set; }
    public string Uri { get; set; }
    public string ThumbnialUri { get; set; }

    public ApplicationUser ApplicationUser { get; set; } //this user is extend from `IdentityUser`
}

Затем в конфигурации DbConext.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
     modelBuilder.Entity<UploadFile>()
            .HasOne(uf => uf.ApplicationUser)
            .WithMany()
            .HasForeignKey(uf => uf.UserId);
}

Теперь запустите новую миграцию!

И измените код метода FileUpload следующим образом:

UploadFile uploadedFile = new UploadFile()
                    {
                        md5 = md5Value,
                        Uri = fileBlob.Uri.ToString(),
                        UserId = currentUser.Id, // Here set the current logged in UserId
                        ThumbnialUri = thumbnailBlob.Uri.ToString()
                    };

                    _dbContext.uploadFiles.Add(uploadedFile);

                    _dbContext.SaveChanges();

Примечание. Если вам нужно, чтобы текущее имя вошло в систему UserId, тогда Вот оно

0 голосов
/ 28 декабря 2018

В расширении от IdentityUser напишите

List<UploadFile> UploadFile {get; set;}

и в загружаемом файле

public int UserId {get; set;}

Здесь введите тип идентификатора User Table и имя свойства должно быть TableName + Id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...