当我们在 ASP.NET MVC 中播种数据库时,为什么我们使用 lambda 表达式来返回元素的 id?

When we Seed a database in ASP.NET MVC, why do we use a lamba expression for returning the id of elements?

在我看到的所有例子中,比如

protected override void Seed(BookService.Models.BookServiceContext context)
{
    context.Authors.AddOrUpdate(x => x.Id,
        new Author() { Id = 1, Name = "Jane Austen" },
        new Author() { Id = 2, Name = "Charles Dickens" },
        new Author() { Id = 3, Name = "Miguel de Cervantes" }
        );

    context.Books.AddOrUpdate(x => x.Id,
        new Book() { Id = 1, Title = "Pride and Prejudice", Year = 1813, AuthorId = 1, 
            Price = 9.99M, Genre = "Comedy of manners" },
        new Book() { Id = 2, Title = "Northanger Abbey", Year = 1817, AuthorId = 1, 
            Price = 12.95M, Genre = "Gothic parody" },
        new Book() { Id = 3, Title = "David Copperfield", Year = 1850, AuthorId = 2, 
            Price = 15, Genre = "Bildungsroman" },
        new Book() { Id = 4, Title = "Don Quixote", Year = 1617, AuthorId = 3, 
            Price = 8.95M, Genre = "Picaresque" }
        );
}

来自 here,我看到有一个 lamba 表达式作为 AddOrUpdate 的第一个参数,它始终显示为 Id(主键?) =21=]。谁能解释一下那个 lamba 表达式是干什么用的?是为了检查Id是否是null?我很困惑。

定义属性应该检查Seed()方法是否应该UPDATEINSERT。在这种情况下,如果给定的 ID 已经在数据库中,则不会再次插入它(但会更新现有条目)。

但您也可以检查 TitleYear、...或其他属性来定义是否应将条目插入或更新到您的数据库中。基本上它是为了防止数据库中出现重复项,但您可以赋予重复项对您意味着什么。