簡體   English   中英

當我只是加載和保存時,EF Core 2.1 正在更新 ID

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM