gpt4 book ai didi

asp.net - DbContext.Add() 和 DbContext.DbSet.Add(TEntity) 之间有什么区别?你什么时候使用其中一种?

转载 作者:行者123 更新时间:2023-12-02 06:56:04 26 4
gpt4 key购买 nike

在 ms 文档中 Razor pages tutorial DbContext 有一个 DbSet Students 集

public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }

并在 OnPostAsync() 方法中使用 DbSet<TEntity>.Add(TEntity) 创建并添加更新的学生方法(documentation) :

        var emptyStudent = new Student();
if (await TryUpdateModelAsync<Student>(
emptyStudent,
"student", // Prefix for form value.
s => s.FirstMidName, s => s.LastName, s => s.EnrollmentDate))
{
_context.Students.Add(emptyStudent);
await _context.SaveChangesAsync();
<小时/>

MVC tutorial还有一个DbContext具有 DbSet Students 但在 StudentsController.cs Create() post 方法中,它会直接调用 DbContext.add() 添加学生在 DbContext 上:

_context.Add(student); 
await _context.SaveChangesAsync();

我看到的唯一的其他区别是,在 MVC 中,学生作为参数传入:

public async Task<IActionResult> Create([Bind("LastName,FirstMidName,EnrollmentDate")] Student student)

{
<小时/>

两者有什么区别吗?它们可以互换使用吗?何时使用其中之一?

最佳答案

sources你可以找到 InternalDbSet's 的实现(这是抽象DbSet的具体实现)Add方法:

public override EntityEntry<TEntity> Add(TEntity entity)
=> _context.Add(entity);

这显然意味着它只是 DbContextAdd 的一个外观。

从技术上讲,这意味着两者的作用完全相同。

关于asp.net - DbContext.Add() 和 DbContext.DbSet<TEntity>.Add(TEntity) 之间有什么区别?你什么时候使用其中一种?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47923870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com