2

我有一个 Code First MVC 4 Web 应用程序 - 地点之间存在多对多关系:

public virtual int PlaceID { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<User> Followers { get; set; }

和用户:

public virtual int UserID { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Place> Places { get; set; }

用户可以“关注”很多地方,这些地方可以有很多关注者。

我想存储有关关系的其他信息 - 比如说评级。因此,用户可以对他们关注的每个地方进行评分,例如在 1 到 10 之间。

我怎样才能实现这一点 - 包括 CRUD 操作(代码优先,实体框架 5)。

谢谢。

4

2 回答 2

1

您需要用两个一对多关系将多对多替换为具有如下定义的 rating 属性的中间类(您可能需要添加导航属性):

创建一个中间类

public class UserPlaceRelationship {
  public virtual int PlaceID { get; set; }
  public virtual int UserID { get; set; }
  public virtual Place Place { get; set; }
  public virtual User User { get; set; }
  public virtual int Rating { get; set; }
}

更新您的位置类:

public virtual int PlaceID { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<UserPlaceReationship> UserRelationships { get; set; }

和你的用户类:

public virtual int UserID { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<UserPlaceReationship> PlaceRelationships { get; set; }

查询会有点棘手,因为您现在必须浏览中间类。

于 2013-06-15T08:05:25.453 回答
0

您必须创建一个联结表并向其添加额外信息。

到目前为止,还没有办法创建具有相关视图的 CRUD 主从控制器。

您应该按照我为您的这个问题提供的答案...

于 2013-07-30T10:04:28.850 回答