2 回答

TA貢獻1820條經驗 獲得超10個贊
您是否嘗試向用戶類添加關系列表,即
public class User : IdentityUser {
List<Relationship> Relationships {get;set;}
}
這可能有助于 EF 充分理解這種關系。

TA貢獻1853條經驗 獲得超18個贊
看起來您正在嘗試many-to-many使用相同的實體進行配置。為此,請編寫您的User和Relationship模型類,如下所示:
public class User : IdentityUser
{
public List<Relationship> UserFriends { get; set; }
public List<Relationship> FriendUsers { get; set; }
}
public class Relationship {
public string UserId {get; set;} // `UserId` type is string as you are using default identity
public User User {get;set;}
public string FriendId {get; set;}
public User Friend {get;set;}
// Enum of Status (Approved, Pending, Denied, Blocked)
public RelationshipStatus RelationshipStatus {get;set;}
public DateTime RelationshipCreationDate {get;set;}
}
然后在模型構建器實體配置中:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Relationship>().HasKey(r => new {r.UserId, r.FriendId});
modelBuilder.Entity<Relationship>()
.HasOne(r => r.User)
.WithMany(u => u.UserFriends)
.HasForeignKey(r => r.UserId).OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<Relationship>()
.HasOne(r => r.Friend)
.WithMany(f => f.FriendUsers)
.HasForeignKey(r => r.FriendId).OnDelete(DeleteBehavior.Restrict);
}
現在它應該可以正常工作了!
- 2 回答
- 0 關注
- 171 瀏覽
添加回答
舉報