【发布时间】:2015-02-12 10:07:32
【问题描述】:
我是一名初学者,遇到了一个问题,如何避免批量分配,目前我只有两个非常小的实体 Author 和 Book。
public class Book
{
public Book()
{
Authors = new List<Author>();
}
public int? BookId { get; set; }
public string Title { get; set; }
public IList<Author> Authors { get; set; }
}
当我更新一本书时,我想避免分配(bookInDb.Title = book.Title):
public void UpdateBook(Book book)
{
var bookInDb = GetBook(book.BookId.Value);
bookInDb.Title = book.Title; // I want this logic to be replaced in more elegent way
var authorsInDb = bookInDb.Authors.Select(f => f.AuthorId).ToList();
var editedAuthors = book.Authors.Select(f => f.AuthorId).ToList();
var authorToAdd = GetAuthorsToAdd(authorsInDb, editedAuthors);
authorToAdd.ToList().ForEach(x=>bookInDb.Authors.Add(x));
var authorsIdToRemove = authorsInDb.Except(editedAuthors);
var authorsToRemove = AuthorsToRemove(bookInDb.Authors, authorsIdToRemove);
authorsToRemove.ToList().ForEach(x => bookInDb.Authors.Remove(x));
_dbContext.SaveChanges();
}
现在这不是问题,但如果我有更多的领域,我应该这样还是有更简单的方法? 感谢您的回答。
【问题讨论】: