当我们在 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()
方法是否应该UPDATE
或INSERT
。在这种情况下,如果给定的 ID 已经在数据库中,则不会再次插入它(但会更新现有条目)。
但您也可以检查 Title
、Year
、...或其他属性来定义是否应将条目插入或更新到您的数据库中。基本上它是为了防止数据库中出现重复项,但您可以赋予重复项对您意味着什么。
在我看到的所有例子中,比如
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()
方法是否应该UPDATE
或INSERT
。在这种情况下,如果给定的 ID 已经在数据库中,则不会再次插入它(但会更新现有条目)。
但您也可以检查 Title
、Year
、...或其他属性来定义是否应将条目插入或更新到您的数据库中。基本上它是为了防止数据库中出现重复项,但您可以赋予重复项对您意味着什么。