我正在使用Entity框架,我有用户,事件和表UsersEvents。 我知道这个问题我可能会在谷歌上找到,我已经尝试但不知怎的,仍然有问题。
所以我有:
User: UserId, Name
Event: EventId, Title
UserEvents: UserId, EventId
我想创建活动。
所以在我的存储库中我有一个方法:
public void CreateEvent(Event @event)
{
//How to add event? (so the database will update the user that created the
//event and also will update the UsersEvents table.
}
我试图先添加事件,但后来遇到问题才能获得用户。 有人可以帮助我,甚至没有代码,只是为了帮助我理解我该怎么做。我应该添加事件然后添加用户吗?或者我应该将事件和用户添加到UsersEvents?在此先感谢:)
答案 0 :(得分:1)
在 pure 多对多关联(其中联结表在类模型中不可见)中,您必须将项添加到所有者的集合中。在你的情况下,这将是:
var evnt = new Event { ... };
var user = db.Users.Include(u => u.Events).Single(u => u.UserId == id);
user.Events.Add(evnt);
db.SaveChanges();
Include
用于确保在向其添加项目之前加载user.Events
。如果未加载,则更改跟踪器将不会注意到更改,也不会保存任何内容。
但我想我理解你的问题。您已经实现了存储库模式,因此您不得不通过自己的存储库处理每个对象。 User
EventRepository
与{{1}}无关,对吧?所以删除这个存储库层!在大多数情况下,它只是一个无用的层,只能沙袋你想要做的所有数据。要确信您可能需要阅读Generic Repository With EF 4.1 what is the point。