EF实体上的数据注释突然停止工作
我已经继承了一个Web应用程序,并且用于定义实体之间关系的数据注释突然停止工作。EF实体上的数据注释突然停止工作
我尝试了各种各样的东西,我无法弄清楚为什么希望这里有人能指出这个问题。
应用程序使用SQLite数据库,并包含三(3)基本表:
- 为了
- order_entry
- order_client
为为了实体看起来是这样的:
[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表,在许多对一的关系与秩序。
的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”)属性为 “订单”,但是这将引发异常说,财产“的OrderId “无法在父角色”订单“中找到。
如果我们将[InverseProperty(“Orders”)]属性添加到“OrderId”属性,则会抛出列表OrderClient_Id无法在表中找到的异常。
的order_entry和order_client表与数据库中的结构为了一个foreign_key约束,我们确信这一点。
我完全沉迷于此。不幸的是,我们无法将当前的应用程序实例移动到流畅的API上,因为变更影响大于SLA协议,因此我们需要解决当前的问题。
任何想法都会受到欢迎。
UPDATE
最初的开发者创建的客户端 - 顺序关系不正确。他表示一个订单可以有多个客户,一个客户有多个订单的实例。
我想你错过了关系的概念。 你可以在这里找到帮助。尝试一次完成,你会完成。 http://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-first.aspx
感谢您的回应,但该网址根本无法帮助我们以数据库优先。我们用代码优先的方式尝试了他们在那里教的内容,并且它可以工作,但是我们有一个现有的数据库,其中包含我们不能丢失的数据,所以我们首先关闭了代码,这至少不适用于数据库 - 至少,这就是为什么我在这里。 – JadedEric
这个URL本身并没有帮助,但是你指出了这个问题,而且我一开始就看不到它。感谢您的帮助,非常感谢。 – JadedEric