当我们在ASP中创建数据库时.为什么我们要用lambda表达式来返回元素的id呢?

本文关键字:我们 返回 表达式 元素 id lambda ASP 创建 数据库 为什么 | 更新日期: 2023-09-27 18:08:09

在我看到的所有示例中,例如

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" }
        );
}

从这里,我看到有一个lambda表达式作为AddOrUpdate的第一个参数,并且它总是显示为表的Id(主键?)。有人能解释一下lamba是什么意思吗?检查Id是否为null ?我困惑。

当我们在ASP中创建数据库时.为什么我们要用lambda表达式来返回元素的id呢?

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

但是你也可以检查Title, Year,…或其他属性来定义是否应该在数据库中插入或更新条目。基本上,这是为了防止数据库中的重复,但您可以为您的重复赋予意义。