[英]EF Core 2.1 is updating ID when I am simply Loading and Saving
當我只是在數據庫中加載和保存值時,EF Core 2.1 正在更新 ID。
注意:我使用的是數據庫優先方法。
錯誤:無法更新標識列“ID”。
string passportNumber = string.Empty;
using (ApplicationDbContext db = new ApplicationDbContext(connectionString))
{
using (IDbContextTransaction transaction = db.Database.BeginTransaction())
{
try
{
TLifting Lifting = new TLifting();
if (!string.IsNullOrEmpty(PassportNumber))
{
Lifting = db.TLifting.FirstOrDefault();
}
Lifting.Col1 = "TEST"
if (Lifting.PassportId == 0)
{
db.TLifting.Add(Lifting);
}
else
{
db.Entry(Lifting).State = EntityState.Modified;
}
db.SaveChanges();
transaction.Commit();
}
catch (Exception e)
{
}
}
}
實體
CREATE TABLE [dbo].[T_Lifting](
[ID] [int] IDENTITY(1,1) NOT NULL,
[PassportID] [int] NOT NULL,
[PassportTypeID] AS ((5)) PERSISTED NOT NULL,
CONSTRAINT [PK_T_Lifting_1] PRIMARY KEY CLUSTERED
(
[PassportID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_T_Lifting] UNIQUE NONCLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[T_Lifting] WITH CHECK ADD CONSTRAINT [FK__T_Lifting__T_Passport] FOREIGN KEY([PassportID], [PassportTypeID])
REFERENCES [dbo].[T_Passport] ([PassportID], [PassportTypeID])
GO
ALTER TABLE [dbo].[T_Lifting] CHECK CONSTRAINT [FK__T_Lifting__T_Passport]
GO
Passport 和 Piping 表具有一對一的關系和 ID 列 Identity 列。
以下設置可能會對您有所幫助:
在protected override void onModelCreating(ModelBuilder modelBuilder) {}
方法中,相應地編寫以下代碼行。
modelBuilder.Entity<Type>().Property(u => u.ID).Metadata.SetAfterSaveBehavior(PropertySaveBehavior.Ignore);
注意:此處Type
將為您的 class 模型/對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.