默认情况下,当您尝试为身份列插入值时,实体框架将引发错误。即使启用test('Register',async t => {
await t
.typeText(registrationPage.input.firstName,firstName)
.typeText(registrationPage.input.email,userEmail)
.typeText(registrationPage.input.password,userPass)
.typeText(registrationPage.input.mobileNumber,'22333')
.click(registrationPage.button.next)
await t
.typeText('registrationPage',code)
});
,它也会处于数据库级别而不是Entity Framework。
要克服这一点,您已经完成了第一步。但是,第二步,您需要告诉实体框架此字段可插入。您可以通过2种不同的方式进行此操作。
-
转到模型类,然后将identity_insert
添加到“标识”列中。使用此方法,您可以插入带有标识列的记录,而不必依赖事务。
-
此外,您可以在同一连接中执行整个代码。这样,当您尝试插入记录时,EF Core将不会引发错误。请检查以下代码。
[DatabaseGenerated(DatabaseGeneratedOption.None)]
更新
using (var db = new Context())
{
db.Categories.Add(new Category
{
Id = 5,Name = "test"
});
db.Database.OpenConnection();
try
{
db.Database.ExecuteSqlRaw("SET IDENTITY_INSERT dbo.Categories ON;");
db.SaveChanges();
db.Database.ExecuteSqlRaw("SET IDENTITY_INSERT dbo.Categories OFF;");
}
finally
{
db.Database.CloseConnection();
}
}
也可以仅在使用实体框架时使用。实体框架核心Fluent API没有针对HasDatabaseGeneratedOption(DatabaseGeneratedOption.None)
的实现。
本文链接:https://www.f2er.com/3108349.html