NealR
NealR

Reputation: 10689

Entity Framework Cascade Delete not working

I have two tables AgentTransmission and ClearinghousePartners that share a one to many relationship. Each AgentTransmission record can serve as a principal for many ClearinhouseParnters.

This is represented via a List object in the AgentTransmission model.

I've sent the OnDelete property to "Cascade" in the .edmx file, however when I attempt to delete an AgentTransmission object I'm getting this error.

The DELETE statement conflicted with the REFERENCE constraint
 \"FK_ClearinghousePartners_AgentTransmission\". The conflict
 occurred in database \"AgentResourcesU01\", table 
\"dbo.ClearinghousePartners\", column 'AgtTransId'.\r\nThe
 statement has been terminated.

AgentTransmission

This contains a TON of fields so I've reduced it to only those that are relevant to the relationship

public partial class AgentTransmission
{
    public int ID { get; set; } //PK
    .
    .
    public virtual List<ClearinghousePartners> ClearinghousePartners { get; set; }
}

Clearinghouse Partners

public partial class ClearinghousePartners
{
    public int Id { get; set; } 
    public string ClearingHouseName { get; set; }
    public string TradingPartnerName { get; set; }
    public Nullable<System.DateTime> StartDate { get; set; }
    public int AgtTransId { get; set; } //FK

    public virtual AgentTransmission AgentTransmission { get; set; }
}

Controller

Nothing crazy here, just doing a normal delete. Would like for the EF to delete all objects in the ClearinghousePartners List property of the AgentTransmission object.. which I believe it is capable of doing (although I could be wrong)

//Cascade deletes set to remove ClearinghousePartners
db.AgentTransmission.Remove(agenttransmission);
db.SaveChanges(); //Exception thrown here

EDMX

enter image description here

Upvotes: 0

Views: 1161

Answers (2)

SaDHacK
SaDHacK

Reputation: 89

If you are using database first approach, you need to make sure that you configure cascade delete on your database as well.

Upvotes: 0

TheNorthWes
TheNorthWes

Reputation: 2739

The on delete setting needs to map to the database. Have you updated the database from your edmx model?

Upvotes: 2

Related Questions