我有一个用户类。 UserOne和UserTwo是用户。 我需要将UserTwo的所有外键关系传递给UserOne。
我可以通过以下方式手动执行此操作:
userTwo.PostsCreatedByUser.ToList().ForEach(a => a.CreatedByUserId = userOne.Id);
userTwo.NotesCreatedByUser.ToList().ForEach(a => a.CreatedByUserId = userOne.Id);
context.SaveChanges();
但我想知道是否有办法做到这一点动态? 使用上面的方法,如果我要添加一个带有CreatedByUserId列的新表,我将不得不回到此过程并使用新集合更新它。
以下是示例类的概述:
public partial class User
{
public User()
{
PostsCreatedByUser = new HashSet<Post>();
NotesCreatedByUser = new HashSet<Note>();
}
public virtual ICollection<Posts> PostsCreatedByUser { get; set; }
public virtual ICollection<Notes> NotesCreatedByUser { get; set; }
}
public partial class Post
{
public Post() { }
public int CreatedByUserId { get; set; }
public virtual User CreatedByUser { get; set; }
}
public partial class Note
{
public Note() { }
public int CreatedByUserId { get; set; }
public virtual User CreatedByUser { get; set; }
}
答案 0 :(得分:0)
您可以使用反射操作,或者如果它满足您的需求,您可以为此User
实体创建扩展方法;
public static class UserEntityExtensions
{
public static void ConvertRelatedEntities(this User userTwo, User userOne)
{
userTwo.PostsCreatedByUser.ToList().ForEach(a => a.CreatedByUserId = userOne.Id);
userTwo.NotesCreatedByUser.ToList().ForEach(a => a.CreatedByUserId = userOne.Id);
}
}
<强>用法强>
userTwo.ConvertRelatedEntities(userOne);
如果您需要添加另一个将要更新的集合,您可以将其添加到扩展方法。您可以更轻松地管理它。