I'm tring to figure out how to represent friendships between users with Entity Framework (5) Code First. My initial idea was to create a class Friendship which contains references to two User instances, so that friendships are represented by separate objects.
public class Friendship
{
public virtual int Id { get; set; }
[Required]
public virtual UserProfile User1 { get; set; }
[Required]
public virtual UserProfile User2 { get; set; }
[Required]
public virtual DateTime Since { get; set; }
}
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
[Required]
public string UserName { get; set; }
}
When trying to create the database via EF Migrations, however, I'm stumped due to a SQL error:
Introducing FOREIGN KEY constraint 'FK_dbo.Friendships_dbo.UserProfile_User2_UserId' on table 'Friendships' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Suggestions as to how to solve this problem would be very welcome.