除了脚手架生成的 class 构造函数和 dbset 之外,其他方法的目的是什么?
What is the purpose of the methods other than class constructor and dbset generated by the scaffolding?
我已使用以下命令将我的数据库构建到模型中:
dotnet ef dbcontext scaffold "Server=.\;Database=MyApp;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models
每当数据库发生变化时,我都会使用 -force 标志触发上述命令。
这已自动生成代表表的 dbcontext 和 class 文件到模型文件夹中。
我的问题:
在dbcontext.cs文件中,除了class构造函数和dbset之外,还生成了以下方法:
- OnModelCreating
- OnModelCreatingPartial
这些方法的目的是什么,我可以去掉它们吗?
例如:在program.cs我打算添加:
builder.Services.AddDbContext<MyAppContext>(opt =>
opt.UseSQLServer(".\;Database=MyApp;Trusted_Connection=True;"));
所以我可以删除 OnConfigurimg 方法。以上2种方法呢?
我想创建一些模型,例如附加表并确定要迁移到数据库中的表。由于这些功能的存在,我对如何进行感到困惑。
脚手架不是手动构建模型匹配数据库中的表,而是帮助您将数据库映射到模型以在项目中工作。这是数据库优先开发的一部分。
获得模型后,您就可以使用新实体扩展项目中的上下文、创建新数据、进行迁移并通过项目扩展数据库。这样你就打破了数据库优先的方式,开始了混合开发。
存在这两种方法,因此您可以通过向上下文添加新实体来扩展模型。你会发现很多关于使用它们的例子。
除此之外,您可能还有其他初始化,and/or而不是在这些方法中添加新内容
至于删除,您的上下文继承自 DbContext
,其中这些定义为 virtual
,因此您的上下文文件必须至少包含它们的空实现。
OnModelCreating
的 official documentation 提到了这个:
This method is called when the model for a derived context has
been initialized, but before the model has been locked down and
used to initialize the context. The default implementation of this
method does nothing, but it can be overridden in a derived class
such that the model can be further configured before it is locked down
我已使用以下命令将我的数据库构建到模型中:
dotnet ef dbcontext scaffold "Server=.\;Database=MyApp;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models
每当数据库发生变化时,我都会使用 -force 标志触发上述命令。
这已自动生成代表表的 dbcontext 和 class 文件到模型文件夹中。
我的问题:
在dbcontext.cs文件中,除了class构造函数和dbset之外,还生成了以下方法:
- OnModelCreating
- OnModelCreatingPartial
这些方法的目的是什么,我可以去掉它们吗?
例如:在program.cs我打算添加:
builder.Services.AddDbContext<MyAppContext>(opt =>
opt.UseSQLServer(".\;Database=MyApp;Trusted_Connection=True;"));
所以我可以删除 OnConfigurimg 方法。以上2种方法呢?
我想创建一些模型,例如附加表并确定要迁移到数据库中的表。由于这些功能的存在,我对如何进行感到困惑。
脚手架不是手动构建模型匹配数据库中的表,而是帮助您将数据库映射到模型以在项目中工作。这是数据库优先开发的一部分。
获得模型后,您就可以使用新实体扩展项目中的上下文、创建新数据、进行迁移并通过项目扩展数据库。这样你就打破了数据库优先的方式,开始了混合开发。
存在这两种方法,因此您可以通过向上下文添加新实体来扩展模型。你会发现很多关于使用它们的例子。
除此之外,您可能还有其他初始化,and/or而不是在这些方法中添加新内容
至于删除,您的上下文继承自 DbContext
,其中这些定义为 virtual
,因此您的上下文文件必须至少包含它们的空实现。
OnModelCreating
的 official documentation 提到了这个:
This method is called when the model for a derived context has been initialized, but before the model has been locked down and used to initialize the context. The default implementation of this method does nothing, but it can be overridden in a derived class such that the model can be further configured before it is locked down