2017-07-26 121 views
2

我是MVC的新手, ,这让我很困惑,但似乎很少有人会讨论这个问题。如何在Model First Asp.net MVC中使用多对多关系?

我正在使用Model首先在ASP.NET MVC中创建数据库。
如果我想用户项目
装置,其用户已经加入到项目之间的会员关系。
而会员关系应该有附加属性投稿加入日期

我创建了一个这样的模型。 (对不起,中国)

enter image description here

用户和项目具有导航属性成员。

但主要问题是,我不知道如何使用它。

如果我不需要贡献JoinDate属性, 我可以很容易地只映射用户和这样的(再次,抱歉)项目的关系:

enter image description here

而且这可以很直观的工作,也许

user.projects.Add(project); 

现在我有了additio关系中的最终属性,我不知道如何以这种方式工作。这非常不直观。

// The user join to the project. 
Member member = new Member(user,project); // create a relationship manually 
member.contribution = 500; 
user.members.Add(member); 

以及返回每个用户拥有的用户列表和项目。

var userSet = from user in db.UserSet 
       select new 
       { 
        id = user.Id, 
        name = user.Name, 
        projectList = user.Member.Select(m => new 
        { 
         id = m.Project.Id, 
         name = m.Project.Name 
        }) 
       }; 

return Json(userSet, JsonRequestBehavior.AllowGet); 

有什么办法可以改善吗?请分享你的想法。 (感谢您的耐心。)

回答

1

我们面临同样的问题,因为我们想保存每个参与测试的人的签名。我们做了这个小解决方法(对不起,糟糕的设计我创造了这个油漆,以满足您的需要):

ER-Diagram

即使有许多一对多连接,每一个“会员”只有1个用户和1每个项目的项目。我们通过Member.Users.First().DoSomething();访问它们。我知道这不是最简洁的方式,任何数据库架构师想要杀了我,如果他看到这个,但它的工作原理,你不必手动创建你的条目。

+0

嗯,对不起,我并不是很了解所有人,你能告诉我一个更好的方法来执行的例子:**用户**加入**项目**? –

+0

@OODWaterball哪一部分你不明白? –

相关问题