ank*_*ora 5 asp.net-identity asp.net-core ef-core-2.0
我正在 ASP MVC Core 2 上创建一个电子商务网站。我继承了我的用户并继承了用于处理用户数据的IdentityUser上下文,并继承了用于处理产品和订单等的不同上下文。IdentityDbContextDbContext
现在,我想将订单或购物车链接到特定用户,但无法思考如何在订单表中引用用户,因为它们处于不同的上下文中。我还使用 EF 创建的默认 guid 作为两个表中的主键。
我应该放弃DbContext并只使用IdentityDbContext吗?这样做是否会导致身份中的异步方法和其他常见的非异步方法出现问题。
这是我的课程中的一些代码片段
using Microsoft.AspNetCore.Identity;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace shophe1.Models
{
public enum Gender { Male, Female, Other}
public class User : IdentityUser
{
public string FullName { get; set; }
public Gender Gender { get; set; }
public string ReferralID { get; set; }
public DateTime RegistrationDateTime { get; set; }
public string ActivationDateTime { get; set; }
public string UserType { get; set; }
public Wallet Wallet {get;set;}
public virtual ICollection<UserBankDetail> BankDetails { get; set; }
public virtual ICollection<UserAddress> AddressDetails { get; set; }
//public ShoppingCart Cart { get; set; }
//public ICollection<Order> Orders { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
订单类别
using System.Collections.Generic;
namespace shophe1.Models
{
public class Order
{
public string OrderId { get; set; }
public ICollection<product> CartProducts { get; set; }
//public User User { get; set; }
public decimal OrderTotal { get; set; }
public decimal ShippingCharges { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果我在订单模型中添加用户并在用户类中添加订单集合,则两个上下文都会混合在一起,并且在迁移时,无论我在迁移 --context 中使用 DbContext 还是 IdentityContext,所有与用户和产品相关的模型都会合并在同一迁移中选项。这是因为用户和订单现在都是相互关联的。
请指教。
继承您的上下文IdentityDbContext。理想情况下,每个数据库应该有一个上下文 - 特别是如果您想要将实体彼此关联起来。
如果您实际上想要单独的数据库,例如身份表驻留在一个数据库中,而您的应用程序表驻留在另一个数据库中,那么您将无法直接将这些实体相互关联。但是,您仍然可以创建伪外键,只需将特定用户的 ID 存储在实体之一的列中即可。然后,您只需使用此 id 对其他上下文发出单独的查询即可手动获取用户。例如:
var order = await appContext.Orders.FindAsync(orderId);
var user = await identityContext.Users.FindAsync(order.UserId);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1325 次 |
| 最近记录: |