首页 > 解决方案 > 如何为没有相同表名 ID 的列创建导航属性

问题描述

users我正在尝试在 table和之间建立一对多的关系orders,但问题是Userstable 没有可以链接到 table 的外键,Orders我指的列是orderNumber

该应用程序已投入生产一段时间,因此尝试添加或更改列不是一种选择。

目标是使用已经存在的东西,并通过遵循导航属性方法使这个异步函数工作。

public async Task<List<Order>> GetCustomerOrders()
{
    using (var context = new Users())
    {

        var user = context.Users.FirstOrDefault(c => c.orderNumber == 7005);
        return user.Orders.ToList(); 

        /* Error
           An unhandled exception occurred while processing the request.

           ArgumentNullException: Value cannot be null.
           Parameter name: source
        */

    }
} 

模型类如下所示:

public partial class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int orderNumber { get; set; }

    /* Create relationship with orderNumber foreign key */
    [ForeignKey("orderNumber")]
    public virtual ICollection<Order> Orders { get; set; }

}

public partial class Order
{
    public int Id { get; set; }
    public int orderNumber { get; set; }

   /* Create relationship */
   public virtual User User { set; get; }

}

标签: entity-frameworkapi.net-core

解决方案


推荐阅读