public static void Join(TodoContext context, Project project, User user) { var joined = new ProjectOwner { Project = project, User = user }; context.ChangeTracker.TrackGraph(joined, (node => node.Entry.State = node.Entry.IsKeySet ? EntityState.Unchanged : EntityState.Added)); }
protected override void OnModelCreating(ModelBuilder builder) { User.OnModelCreating(this, builder); TodoItem.OnModelCreating(this, builder); FileRef.OnModelCreating(this, builder); StatusSet.OnModelCreating(this, builder); ProjectOwner.OnModelCreating(this, builder); }
public static bool Unjoin(TodoContext context, Project project, User user) { var joined = context.Find <ProjectOwner>(user.Uid, project.Pid); System.Console.WriteLine("Found joined: " + joined != null); if (joined == null) { return(false); } ProjectOwner left = project.OwnerUsers.First(projOwner => projOwner.SameAs(joined)); ProjectOwner right = user.OwnedProjects.First(projOwner => projOwner.SameAs(joined)); if (left == null || right == null) { return(false); } context.Remove(joined); project.OwnerUsers.Remove(left); user.OwnedProjects.Remove(right); return(true); }
public bool SameAs(ProjectOwner other) { return(UserId == other.UserId && ProjectId == other.ProjectId); }