Entity framework 4 '中的实体框架实体;xxContext.x';参加';x#y';关系错误
在我之前,一位开发人员首先使用实体框架代码。我不擅长EF代码,所以当我尝试插入数据时,我的代码会出现以下错误: “TourismContext.HotelOrder”中的实体参与“HotelOrder\u Order”关系。找到0个相关的“HotelOrder\u Order\u Target”。预计会有1个“酒店订单\订单\目标”。 这是我的插入代码:Entity framework 4 '中的实体框架实体;xxContext.x';参加';x#y';关系错误,entity-framework-4,ef-code-first,code-first,entity-framework-migrations,Entity Framework 4,Ef Code First,Code First,Entity Framework Migrations,在我之前,一位开发人员首先使用实体框架代码。我不擅长EF代码,所以当我尝试插入数据时,我的代码会出现以下错误: “TourismContext.HotelOrder”中的实体参与“HotelOrder\u Order”关系。找到0个相关的“HotelOrder\u Order\u Target”。预计会有1个“酒店订单\订单\目标”。 这是我的插入代码: var hotelOrdersInsert = new Data.Entities.HotelOrder {
var hotelOrdersInsert = new Data.Entities.HotelOrder
{
OrderId = odr.ID // this gives 7
HotelID = 13,
StartAt = DateTime.Now, // arrivalDate,
EndAt = DateTime.Now, // departureDate,
PaymentTypeID = 1,
PaymentStatusID = 1,
PaymentIdentifier = "a",
TotalRate = Convert.ToDecimal(total),
CurrencyID = 1
};
db.HotelOrders.Add(hotelOrdersInsert);
db.SaveChanges();
这是我的HotelOrder
课程:
public class HotelOrder
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required]
public int HotelID { get; set; }
public int OrderId { get; set; }
// other properties
public virtual Order Order { get; set; }
public virtual Hotel Hotel { get; set; }
}
public class Order
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public virtual HotelOrder HotelOrder { get; set; }
}
这是我的订单
课程:
public class HotelOrder
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required]
public int HotelID { get; set; }
public int OrderId { get; set; }
// other properties
public virtual Order Order { get; set; }
public virtual Hotel Hotel { get; set; }
}
public class Order
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public virtual HotelOrder HotelOrder { get; set; }
}
在哪里可以找到订单和酒店订单模型之间的关系?您必须按照以下方式编写此关系:
public class HotelOrder
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required]
public int HotelID { get; set; }
[ForeignKey("Order")]
public int OrderId { get; set; }
public Order Order { get; set; }
[ForeignKey("Hotel")]
public int HotelId { get; set; }
public Hotel Hotel { get; set; }
}
public class Order
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public List<HotelOrder> HotelOrders { get; set; }
}
公共类酒店订单
{
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
公共int ID{get;set;}
[必需]
公共int HotelID{get;set;}
[外汇(“订单”)]
公共int-OrderId{get;set;}
公共秩序{get;set;}
[外键(“酒店”)]
公共int HotelId{get;set;}
公共酒店{get;set;}
}
公共阶级秩序
{
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
公共int ID{get;set;}
公共列表酒店订单{get;set;}
}
您必须按如下方式编写此关系:
public class HotelOrder
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required]
public int HotelID { get; set; }
[ForeignKey("Order")]
public int OrderId { get; set; }
public Order Order { get; set; }
[ForeignKey("Hotel")]
public int HotelId { get; set; }
public Hotel Hotel { get; set; }
}
public class Order
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public List<HotelOrder> HotelOrders { get; set; }
}
公共类酒店订单
{
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
公共int ID{get;set;}
[必需]
公共int HotelID{get;set;}
[外汇(“订单”)]
公共int-OrderId{get;set;}
公共秩序{get;set;}
[外键(“酒店”)]
公共int HotelId{get;set;}
公共酒店{get;set;}
}
公共阶级秩序
{
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
公共int ID{get;set;}
公共列表酒店订单{get;set;}
}
问题在于HotelOrder和Order之间的关系。你很可能是一对一的关系。也就是说,每个酒店订单都必须有订单
这种关系可能是在所谓的fluent API中定义的。检查从DbContext派生的类的OnModelCreating(DbModelBuilder)函数重写。它可能是这样说的:
modelBuilder.Entity<HotelOrder>().HasRequired(hotel_order => hotel_order.Order).WithRequiredPrincipal();
modelBuilder.Entity().HasRequired(hotel_order=>hotel_order.order).with required principal();
这告诉EntityFramework每个HotelOrder都必须有一个订单
或者,可以将关系定义为DataAnnotation。就像艾文·马马多夫在回答中解释的那样
在这一点上,解决方案变得显而易见。在将Order实例添加到db.HotelOrders之前,需要将其添加到HotelOrder实例。问题在于HotelOrder和Order之间的关系。你很可能是一对一的关系。也就是说,每个酒店订单都必须有订单 这种关系可能是在所谓的fluent API中定义的。检查从DbContext派生的类的OnModelCreating(DbModelBuilder)函数重写。它可能是这样说的:
modelBuilder.Entity<HotelOrder>().HasRequired(hotel_order => hotel_order.Order).WithRequiredPrincipal();
modelBuilder.Entity().HasRequired(hotel_order=>hotel_order.order).with required principal();
这告诉EntityFramework每个HotelOrder都必须有一个订单
或者,可以将关系定义为DataAnnotation。就像艾文·马马多夫在回答中解释的那样
在这一点上,解决方案变得显而易见。在将订单实例添加到db.HotelOrders之前,您需要将订单实例添加到HotelOrder实例。请添加酒店类请添加酒店类