EF 实体上的数据注释突然停止工作

Data annotations on EF entities suddenly stopped working

我继承了一个 Web 应用程序,用于定义实体之间关系的数据注释突然停止工作。

我尝试了很多方法,但我不明白为什么希望这里有人能指出问题。

该应用程序使用 SQLite 数据库,并包含三 (3) 个基本 table:

订单 的实体如下所示:

[Table("order")]
public class Order
{
    [Column("id")]
    public int Id { get; set; }

    public virtual ICollection<OrderEntry> OrderEntries { get; set; }

    [ForeignKey("Id")]
    public virtual OrderClient OrderClients { get; set; }

    public Order()
    {
        OrderEntries = new HashSet<OrderEntry>();
    }
}

没什么特别的。一个订单可以包含多个条目,但一个订单只能有一个客户。

order_entry 的实体代码如下所示:

[Table("order_entry")]
public class OrderEntry
{
    [Column("id")]
    public int Id { get; set; }

    [Column("order_id")]
    public int OrderId { get; set; }

    [ForeignKey("OrderId")]
    public virtual Order Order { get; set; }
}

同样,没什么特别的。一个条目只能属于一个订单。

OrderEntries 运作良好,我们可以做一些基本的包含,没有问题:

ctx.Orders.Include(x => x.OrderEntries).ToList();

然而,问题出在order_client table,在多对一的关系中与订单

order_client实体:

[Table("order_client")]
public class OrderClient
{
    [Column("id")]
    public int Id { get; set; }

    [Column("order_id")]
    public int OrderId { get; set; }

    public virtual ICollection<Order> Orders { get; set; }

    public OrderClient()
    {
        Orders = new HashSet<Order>();
    }
}

我们已经尝试将 [ForeignKey("OrderId")] 属性添加到 "Orders",但这会引发异常,表明 属性 "OrderId" 无法在父角色 "order".

上找到

如果我们将 [InverseProperty("Orders")] 属性添加到 "OrderId" 属性,则会抛出异常,该列在 table.

中找不到 OrderClient_Id

order_entryorder_clienttable有一个foreign_key在数据库结构中使用 order 进行约束,我们确保了这一点。

我完全被难住了。不幸的是,我们无法将应用程序的当前实例移动到流畅 API,因为更改的影响超过了 SLA 协议,因此我们需要解决当前的问题。

欢迎任何想法。

更新

原开发者错误地创建了客户-订单关系。他说一个订单可以有多个客户,一个客户有多个订单的实例。

我认为您缺少关系的概念。 您可以在这里找到帮助。尝试完成一次,您就会完成。 http://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-first.aspx