我的网站存在问题。我有一个UserProfile类,在我的文件底部有两个导航属性,如下所示;
rdd: RDD[(String, String)]
然后创建另一个表(我相信称为交叉表?),它自己管理这个关系。这工作正常,我可以在此列表中添加/删除。我遇到问题的部分是当我想添加另一个名为“BlockedUsers”的导航属性时,就像这样;
RDD[_]
当我运行Add-Migration和Update-Database时,它会删除之前为我的关注/关注者列表创建的表并破坏我的网站功能,因此我无法在关注/关注者列表中添加/删除。
为什么要这样做,我该如何解决?
谢谢,
欧文
答案 0 :(得分:0)
我设法使用FluentAPI解决了这个问题。我之前没有真正研究过它,但我意识到这是实现我想做的唯一方法。
如果您获取第一个导航属性块(Follow / Follower),这将创建一个交叉表。但是,如果我添加第三个导航属性来执行相同的操作,它将删除此表。
为了同时拥有BlockedUsers和Follow / Followers两个表,我必须使用FluentAPI手动创建此交叉。
以下是我添加到IdentityModel.cs中的内容 -
protected override void OnModelCreating( DbModelBuilder modelBuilder)
{
// Sets up Many-To-Many relationship for Following/Followers UserProfiles
modelBuilder.Entity<UserProfile>()
.HasMany( t => t.Followers )
.WithMany( t => t.Following );
// Sets up Many-To-Many relationship for Blocked UserProfiles
modelBuilder.Entity<UserProfile>()
.HasMany( t => t.BlockedUsers )
.WithMany();
base.OnModelCreating( modelBuilder );
}
我希望这可以帮助有同样问题的人。
然而,我仍然想知道为什么在我添加任何FluentAPI代码之前它首先删除了表。