【发布时间】: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