2014-06-30 131 views
0

我試圖創建下列對象爲我的DB(CodeFirst), ,我有以下問題:實體關係 - CodeFirst - 多重關係

當我嘗試新的一個或多個對象添加到新srevice提供商插槽(如下:)

ServiceProviderSlots slot = new ServiceProviderSlots(); 

     slot.ServiceProviderID = 1; 
     slot.SlotServices.Add(new ServiceProviderServices() { ServiceProviderServiceID = 1 }); 

     ctx.ServiceProviderSlots.Add(slot); 

我得到一個錯誤,因爲我不是創建一個新對象,和我丟失的外鍵,但我希望使用已存在的數據表。

錯誤:

{"The INSERT statement conflicted with the FOREIGN KEY constraint \"FK_dbo.ServiceProviderServices_dbo.ServiceProviders_ServiceProviderID\". The conflict occurred in database \"qunadodb\", table \"dbo.ServiceProviders\", column 'ServiceProviderID'.\r\nThe statement has been terminated."} 

也許這是與此有關?

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 

     modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); 
    } 

我之所以使用因爲我無法創建數據庫,否則,我有另一個錯誤。

結構見下文:

public class BusinessCategories 
{ 

    [Key] 
    public int CategoryID { get; set; } 
    public String Title { get; set; }   
} 



public class BusinessTypes 
{ 
    [Key] 
    public int TypeID { get; set; } 
    public String Title { get; set; } 

    public int CategoryID { get; set; } 
    public virtual BusinessCategories Categories { get; set; }   
} 

public class ServiceProviders 
{ 

    [Key] 
    public int ServiceProviderID { get; set; } 

    public String Name { get; set; } 

    public Int32 TypeID { get; set; } 
    public virtual BusinessTypes Type { get; set; } 

} 

public class ServiceProviderServices 
{ 
    [Key] 
    public Int32 ServiceProviderServiceID { get; set; } 

    public String Price { get; set; } 

    public Int32 ServiceProviderID { get; set; } 
    public virtual ServiceProviders ServiceProvider { get; set; } 

    public Int32 SubServiceID { get; set; } 
    public virtual SubServices SubService { get; set; } 

} 


public class ServiceProviderSlots 
{ 
    public ServiceProviderSlots() 
    { 
     SlotServices = new List<ServiceProviderServices>(); 

    } 
    [Key] 
    public Int32 SlotID { get; set; } 


    public String Name { get; set; } 

    public Int32 ServiceProviderID { get; set; } 
    [ForeignKey("ServiceProviderID")] 
    public virtual ServiceProviders ServiceProvider { get; set; } 

    public virtual ICollection<ServiceProviderServices> SlotServices { get; set; } 

} 

回答

0

此消息意味着,你可能還沒有在數據庫中與ID = 1一的ServiceProvider。

在這個CAS中,您必須將實體附加到上下文中。

+0

我想要一個多對多的關係,我通過創建一個子表來解決它。 –