簡體   English   中英

關聯的 Model class 未保存一直返回 null

[英]Associated Model class not being saved keeps returning null

I have a User model inside my Ticket model but every time I try and set the User inside the Ticket model, it always just ends up being null when I try and retrieve it later on and I cannot seem to figure out why.

目標是能夠創建Ticket ,創建時您可以輸入用戶名以將此票證與某人相關聯。 如果找到用戶,則創建票證。

但是,它似乎沒有保存輸入的關聯User或任何有關它的信息。

楷模

public class Ticket
{
    [Key]
    public Guid Id { get; set; }
    
    [Required]
    public string Title { get; set; }

    public User owningUser { get; set; }

}

public class User
{
    public Guid UserId { get; set; }
    
    [Required]
    public string Username { get; set; }
   
    public List<Ticket> assignedTickets { get; set; }
}

創建.razor

<InputText id="title" @bind-Value="@ticketItem.owningUser.Username" class="form-control" aria-label="Disabled input example" />

private Ticket ticketItem { get; set; } = new Ticket();

protected override async Task OnInitializedAsync()
{
    ticketItem.owningUser = new User();
}

public async Task CreateNewTodoItem()
{
    var result = await Http.PostAsJsonAsync("TodoItems", ticketItem);
}

Controller

public async Task <ActionResult> CreateNewTodoItem(Ticket item)
    {
        ApplicationUser userValid;
        User tempUser = new User();
        try
        {
            userValid = userManager.Users.Where(s => s.Email == item.owningUser.Username).First();

            item.owningUser = new User();
            item.owningUser.Username = userValid.Email;

            context.Tickets.Add(item);
            await context.SaveChangesAsync();
            return NoContent();

        } catch (InvalidOperationException)
        {
            return BadRequest();
        }

    }

檢索方法

private User associatedUser { get; set; }

[Parameter]
public Guid Id { get; set; }

protected override async Task OnInitializedAsync()
{

    ticketItem = await Http.GetFromJsonAsync<Ticket>($"TodoItems/{Id}");
    associatedUser = await Http.GetFromJsonAsync<User>($"User/{Id}");

    ticketItem.owningUser = associatedUser;
}

// Controller ---

[HttpGet("{ticketID}")]
    public async Task<ActionResult<User>> GetUserForTicket(Guid ticketID)
    {
        var ticketUser = context.Tickets.First(p => p.Id == ticketID);
        User use = new User { Username = ticketUser.owningUser.Username };
        return Ok(use);
    }

Null 錯誤

在此處輸入圖像描述

數據庫上下文

    public class ApplicationDbContext : ApiAuthorizationDbContext<ApplicationUser>
{
    public ApplicationDbContext(
        DbContextOptions options,
        IOptions<OperationalStoreOptions> operationalStoreOptions) : base(options, operationalStoreOptions)
    {

    }

    public DbSet<Company> Companies { get; set; }
    public DbSet<Ticket> Tickets { get; set; }
    public DbSet<Project> Projects { get; set; }
    public DbSet<User> Users { get; set; }
}

你必須包括 owningUser

var ticketUser = context.Tickets.Include(o=> o.owningUser).First(p => p.Id == ticketID);

if(ticketUser.owningUser!=null)
 return new User { Username = ticketUser.owningUser.Username };

 return BadRequest("no owningUser");

但可能是 owningUser 是 null 或者您的 dbcontext 配置不正確,因為我可以看到您的 Create 操作根本沒有任何意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM