ASP.NET MVC 4,EF5,在多对多的联结表中存储附加数据

时间:2013-06-15 07:43:29

标签: asp.net-mvc entity-framework asp.net-mvc-4 entity-framework-5 code-first

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

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; }

用户可以“关注”很多地方,地方可以有很多粉丝。

我想存储关于这种关系的其他信息 - 比如评级。因此,用户可以对他们关注的每个地点进行评级,比如说。

我如何实现这一目标 - 包括CRUD操作(Code First,Entity Framework 5)。

感谢。

2 个答案:

答案 0 :(得分: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; }

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

答案 1 :(得分:0)

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

到目前为止,无法创建具有相关视图的CRUD主 - 细节控制器。

你应该按照我提供给this你的问题的答案......