Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 4 '中的实体框架实体;xxContext.x';参加';x#y';关系错误_Entity Framework 4_Ef Code First_Code First_Entity Framework Migrations - Fatal编程技术网

Entity framework 4 '中的实体框架实体;xxContext.x';参加';x#y';关系错误

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 {

在我之前,一位开发人员首先使用实体框架代码。我不擅长EF代码,所以当我尝试插入数据时,我的代码会出现以下错误:

“TourismContext.HotelOrder”中的实体参与“HotelOrder\u Order”关系。找到0个相关的“HotelOrder\u Order\u Target”。预计会有1个“酒店订单\订单\目标”。

这是我的插入代码:

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实例。

请添加酒店类请添加酒店类