第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

當(dāng) IDENTITY_INSERT 設(shè)置為 OFF 時(shí),無法為標(biāo)識(shí)列插入顯式值。(實(shí)體框架核心)

當(dāng) IDENTITY_INSERT 設(shè)置為 OFF 時(shí),無法為標(biāo)識(shí)列插入顯式值。(實(shí)體框架核心)

C#
冉冉說 2023-07-09 16:46:43
當(dāng)我嘗試將新實(shí)體添加到數(shù)據(jù)庫中時(shí),出現(xiàn)此錯(cuò)誤。實(shí)體名稱為DestuffedContainer. 該實(shí)體及相關(guān)實(shí)體的定義如下:去填充容器:[Table("DestuffedContainer")]public class DestuffedContainer{    public long DestuffedContainerId { get; set; }    public int Index { get; set; }    public string Description { get; set; }    public int? PackageQuantity { get; set; }    public string PackageType { get; set; }    public double? CBM { get; set; }    public string Location { get; set; }    public string MarksAndNumber { get; set; }    public int? ManifestWeight { get; set; }    public int? FoundWeight { get; set; }    public int? ManifestQuantity { get; set; }    public string ConsigneeName { get; set; }    public string Remarks { get; set; }    public string InvoiceFound { get; set; }    public string PackageFound { get; set; }    public long TellySheetId { get; set; }    public TellySheet TellySheet { get; set; }    public long ContainerIndexId { get; set; }    public ContainerIndex ContainerIndex { get; set; }}電視表:[Table("TellySheet")]public class TellySheet{    public TellySheet()    {        DestuffedContainers = new List<DestuffedContainer>();    }    public long TellySheetId { get; set; }    public string TellyClerk { get; set; }    public DateTime? DestuffDate { get; set; }    public string DayNight { get; set; }    public long ShippingAgentId { get; set; }    public ShippingAgent ShippingAgent { get; set; }    public List<DestuffedContainer> DestuffedContainers { get; set; }}我不確定這個(gè)錯(cuò)誤意味著什么,因?yàn)槲覜]有明確指定 destuffedcontainer 實(shí)體的主鍵值,默認(rèn)情況下它是 0。實(shí)體框架應(yīng)該將其作為插入,但它會(huì)拋出錯(cuò)誤。幾天前它工作正常,但我不確定自從導(dǎo)致此錯(cuò)誤以來發(fā)生了什么變化。我正在使用 Entity Framework Core 來對我的實(shí)體進(jìn)行建模。我嘗試了幾種解決方案,但似乎都不起作用。如果您能幫助解決此問題,我將不勝感激。
查看完整描述

5 回答

?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊

該錯(cuò)誤表明您無法在 IDENTITY 列上插入數(shù)據(jù),因?yàn)檫@樣做已被禁用。


您可以通過執(zhí)行以下操作來啟用此行為


SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table_name { ON | OFF }


當(dāng)您使用實(shí)體框架核心時(shí),您必須:


context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.DestuffedContainer ON");

context.SaveChanges();

context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.DestuffedContainer OFF");

> SQL Server IDENTITY 列中的顯式值

編輯我很抱歉我無法理解您沒有提供價(jià)值。


然后確保您的列被標(biāo)記為模型的 IDENTITY。我看到您正在使用屬性來告訴 efcore 如何命名您的表。只要您不使用Id關(guān)鍵屬性的常規(guī)名稱,您就需要在實(shí)體類上使用[Key]屬性來明確它,在屬性之上,例如:


[Key]

public long DestuffedContainerId { get; set; }

或者在上下文類中使用 FluentAPI:


protected override void OnModelCreating(ModelBuilder modelBuilder)

{

?...

? ? modelBuilder

? ? .Entity<DestuffedContainer>()

? ? .Property(d => d.DestuffedContainerId)

? ? .ValueGeneratedOnAdd()?


? ? modelBuilder

? ? .Entity<DestuffedContainer>()

? ? .HasKey(d => d.DestuffedContainerId)

?...

}

還要檢查 sql server 表定義并確保以您的屬性命名的字段設(shè)置為IDENTITY,考慮到您收到的錯(cuò)誤,這是肯定的,但值得檢查。


查看完整回答
反對 回復(fù) 2023-07-09
?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊

對于未來的讀者。

我遇到了相反的問題。我不希望 IDENTITY 自動(dòng)開啟。

所以像這樣:(非常簡單的流暢映射)

????????builder.HasKey(ent?=>?ent.MyColumnWhichIsTheKey);

我必須添加這一行(ValueGenerateNever)以保持 IDENITY 處于關(guān)閉狀態(tài)(故意“關(guān)閉”):

????????builder.HasKey(ent?=>?ent.MyColumnWhichIsTheKey);
????????builder.Property(ent?=>?ent.MyColumnWhichIsTheKey).ValueGeneratedNever();


其他提示:

using?Microsoft.EntityFrameworkCore;using?Microsoft.EntityFrameworkCore.Metadata.Builders;

<PackageReference?Include="Microsoft.EntityFrameworkCore"?Version="3.1.3"?/>
<PackageReference?Include="Microsoft.EntityFrameworkCore.Relational"?Version="3.1.3"?/>


查看完整回答
反對 回復(fù) 2023-07-09
?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

以防萬一有人在 2021 年使用 EF Core 5.x 發(fā)現(xiàn)這個(gè)問題,我為此苦苦掙扎了幾個(gè)小時(shí),經(jīng)過大量搜索后沒有找到我的解決方案。


就我而言,我有一個(gè)現(xiàn)有數(shù)據(jù)庫,并使用 EF Core 腳手架命令為我創(chuàng)建數(shù)據(jù)庫上下文和關(guān)聯(lián)的模型類。當(dāng)嘗試將新的 TimeEntry 插入數(shù)據(jù)庫中的 TimeEntry 表時(shí),如下所示:


TimeEntry timeEntry = new TimeEntry

        {

            EmployeeId = Emp.Id,

            ScheduleTypeId = SchedTypeId,

            FacilityId = FacilityId,

            DateTimeIn1 = DateTimeIn1,

            DateTimeIn2 = DateTimeIn2,

            DateTimeIn3 = DateTimeIn3,

            DateTimeIn4 = DateTimeIn4,

            DateTimeIn5 = DateTimeIn5,

            DateTimeIn6 = DateTimeIn6,

            DateTimeIn7 = DateTimeIn7,

            DateTimeOut1 = DateTimeOut1,

            DateTimeOut2 = DateTimeOut2,

            DateTimeOut3 = DateTimeOut3,

            DateTimeOut4 = DateTimeOut4,

            DateTimeOut5 = DateTimeOut5,

            DateTimeOut6 = DateTimeOut6,

            DateTimeOut7 = DateTimeOut7,

            Day1TotalHours = day1TotalHoursDecimal,

            Day2TotalHours = day2TotalHoursDecimal,

            Day3TotalHours = day3TotalHoursDecimal,

            Day4TotalHours = day4TotalHoursDecimal,

            Day5TotalHours = day5TotalHoursDecimal,

            Day6TotalHours = day6TotalHoursDecimal,

            Day7TotalHours = day7TotalHoursDecimal,

            WeekStartDate = StartDateForWeek,

            WeekTotalHours = WeekTotalHoursDecimal

        };

        db.TimeEntries.Add(timeEntry);

        db.SaveChanges();

盡管我沒有明確嘗試插入 ID,但我還是收到了此錯(cuò)誤。經(jīng)過多次嘗試,我終于找到了解決方法,嘗試了我能找到的每一篇文章中的所有內(nèi)容,但沒有任何效果。此代碼解決了我的 DbContext 類中 id 字段的問題:


modelBuilder.Entity<TimeEntry>(entity =>

        {

            entity.ToTable("TimeEntry");


            entity.Property(e => e.Id).HasColumnName("id").ValueGeneratedOnAdd(); // <-- This fixed it for me

另請注意,在其他帖子之后,我也在我的 TimeEntry 模型類中進(jìn)行了此設(shè)置,不確定是否重要以避免此錯(cuò)誤:


public partial class TimeEntry

{

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]

    [Key]

    public int Id { get; set; } // rest of code removed for brevity

我真的希望這對未來的人有所幫助,這讓我發(fā)瘋。


查看完整回答
反對 回復(fù) 2023-07-09
?
一只甜甜圈

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊

有時(shí),當(dāng)開發(fā)人員在 Context 中手動(dòng)創(chuàng)建 modelBuilder 時(shí),他/她可能會(huì)編寫這樣的代碼,并且準(zhǔn)確地 .ValueGenerateNever() -這部分返回您主題中的錯(cuò)誤

entity.Property(e => e.Id).ValueGeneratedNever();

http://img1.sycdn.imooc.com//64aa74620001fc6805690189.jpg

查看完整回答
反對 回復(fù) 2023-07-09
?
慕婉清6462132

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊

如果您想保持 Identity_Insert 關(guān)閉并允許在定義的應(yīng)用程序上下文上的 OnModelCreating 方法中手動(dòng)插入,則這是一個(gè)比所選答案更好的解決方案

這是使用 EF Core for NET 5.0

      modelBuilder.Entity<EntityType>().HasKey(x => x.KeyWithIdentityValue);
      modelBuilder.Entity<EntityType>().Property(x => x.KeyWithIdentityValue).ValueGeneratedOnAdd();```



查看完整回答
反對 回復(fù) 2023-07-09
  • 5 回答
  • 0 關(guān)注
  • 246 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號