【问题标题】:I can't load Identity User using EF core 2.2我无法使用 EF core 2.2 加载身份用户
【发布时间】:2020-03-25 15:15:17
【问题描述】:

我正在构建一个具有Order 实体的系统,其中每个实体都有一个Sender。我正在使用

  • ASP.Net core 2.2(带有用于管理成员的身份);
  • EF 核心 2.2。

我面临的问题是我无法使用.Include(x => x.Sender) 添加用户实体。它始终返回为null

这是Order 代码:

public class Order
{
    public int Id { get; set; }
    public OrderStatusType CurrentOrderStatus { get; set; }
    public string PublicOrderId { get; set; }
    public Address PickupAddress { get; set; }
    public Address DropAddress { get; set; }

    public User Sender { get; set; }
    public User Receiver { get; set; }
    public User Creator { get; set; }

    public double ExpectedDistance { get; set; }
    public int ExpectedDuration { get; set; }
}

这是User 代码:

public class User : IdentityUser
{
    public string FirastName { get; set; }
    public string LastName { get; set; }
    public string LastNumber { get; set; }
    public string Gander { get; set; }
    public Language PrefairdLanguage { get; set; }
    public string Themapnail { get; set; }
    public Address DefaultAddress { get; set; }
    public Store Store { get; set; }
    public int Imei { get; set; }
} 

这是DbContext 代码:

public class MandoobContext : IdentityDbContext<User>
{
   // private readonly string connectionString;

    public MandoobContext(DbContextOptions<MandoobContext> options) : base(options)
    {

    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

    }


    public DbSet<Order> Orders { get; set; }
    public DbSet<Address> Addresses { get; set; }    
}

这是我尝试从数据库中检索数据的控制器:

[HttpGet]
[Route("Order/{id:int}")]
public async Task<IActionResult> Order(int id)
{
    Order order = _context.Orders
        .Include(x => x.DropAddress)
        .Include(x => x.PickupAddress)
        .Include(x => x.Sender)
        .FirstOrDefault(x => x.Id == id);

    return View(order);
}

如果有人有想法,请提前感谢您的帮助。

问候。

【问题讨论】:

  • 与问题无关,但应避免在控制器上使用FirstOrDefault,而应使用FirstOrDefaultAsync
  • 我也可以成功获取到用户。你能分享你数据库中的数据吗?你发送请求的url是什么?

标签: c# asp.net-core entity-framework-core asp.net-identity


【解决方案1】:

您确定在给定Order 上的数据库中设置了Sender 吗?我已经使用 VS .net 模板创建了一个工作应用程序,并将您的模型添加到其中,它就可以工作了。

你可以在 GitHub 上找到它:https://github.com/tvdias/SO59114688

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 谢谢@Tân。链接上没有答案,但任何人都可以复制该问题。由于我能够使用 VS 模板 + 问题上的代码使其工作,因此没有代码可以添加到答案中。我认为这是数据问题...
【解决方案2】:

我可以通过更新到 .net Core 3.0 和 Ef core3.0 来解决问题。 我不知道到底出了什么问题,但更新修复了它。

问候

【讨论】:

  • 如果您认为这是最佳答案,您可以接受。
猜你喜欢
  • 2020-04-17
  • 1970-01-01
  • 2020-01-20
  • 1970-01-01
  • 1970-01-01
  • 2019-10-30
  • 2020-09-04
  • 2019-10-18
  • 1970-01-01
相关资源
最近更新 更多