欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決Entity Framework中自增主鍵的問題

 更新時(shí)間:2025年06月19日 15:08:55   作者:nihao_yang  
這篇文章主要介紹了解決Entity Framework中自增主鍵的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Entity Framework中自增主鍵問題

當(dāng)實(shí)體類中有int類型的字段,并且該字段對(duì)應(yīng)數(shù)據(jù)庫中的主鍵,那么Entity Framework會(huì)自動(dòng)將該字段設(shè)為自動(dòng)增長。

若此時(shí)數(shù)據(jù)庫中對(duì)應(yīng)的主鍵并非是自動(dòng)增長的,則在插入數(shù)據(jù)時(shí)會(huì)出現(xiàn)異常。

舉個(gè)例子:

若有如下實(shí)體類Test和數(shù)據(jù)庫表Test。

public class Test
{
    public int Id { get; set; }
    public string Name { get; set; }
}
create table Test(
    Id int primary key,
    Name varchar(20)
);

Entity Framework會(huì)將實(shí)體類Test的Id字段設(shè)為自動(dòng)增長的,而此時(shí)表Test中的主鍵Id并沒有設(shè)為自動(dòng)增長。若此時(shí)向數(shù)據(jù)表Test插入數(shù)據(jù)則會(huì)出現(xiàn)異常。

Mysql數(shù)據(jù)庫雖然會(huì)插入成功,但插入數(shù)據(jù)的Id為始終0。而SqlServer則直接出現(xiàn)異常,無法插入。

解決辦法1

將數(shù)據(jù)表中的Id設(shè)為自增

create table Test(
    Id int primary key auto_increment,
    Name varchar(20)
);

解決辦法2

在實(shí)體類Test的Id字段添加注解

using System.ComponentModel.DataAnnotations.Schema
public class Test
{
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }
    public string Name { get; set; }
}

解決辦法3

在相應(yīng)的DbContext中添加

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Test>().Property(p => p.ID)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Unity接入百度AI實(shí)現(xiàn)果蔬識(shí)別

    Unity接入百度AI實(shí)現(xiàn)果蔬識(shí)別

    本文將介紹如何利用Unity接入百度AI從而實(shí)現(xiàn)果蔬識(shí)別,可以做到識(shí)別近千種水果和蔬菜的名稱,可自定義返回識(shí)別結(jié)果數(shù)。感興趣的小伙伴可以了解一下
    2022-02-02
  • C# Guid.NewGuid獲得隨機(jī)數(shù)

    C# Guid.NewGuid獲得隨機(jī)數(shù)

    根據(jù)GUID獲得種子,然后獲得隨機(jī)數(shù),這個(gè)是完全隨機(jī)的
    2013-04-04
  • C#優(yōu)化if...else代碼的方案總結(jié)

    C#優(yōu)化if...else代碼的方案總結(jié)

    在編寫代碼實(shí)現(xiàn)業(yè)務(wù)需求過程中,會(huì)使用到大量的if...else 判斷語句,隨業(yè)務(wù)復(fù)雜程度不同,導(dǎo)致判斷語句出現(xiàn)多層嵌套、多分支等情況,導(dǎo)致代碼可讀性變差、增加維護(hù)難度,本文介紹了C# 如何優(yōu)化 if...else 讓代碼優(yōu)雅起來,需要的朋友可以參考下
    2024-06-06
  • C#裝飾器模式(Decorator Pattern)實(shí)例教程

    C#裝飾器模式(Decorator Pattern)實(shí)例教程

    這篇文章主要介紹了C#裝飾器模式(Decorator Pattern),以一個(gè)完整實(shí)例形式講述了C#裝飾器模式的實(shí)現(xiàn)過程,有助于深入理解C#程序設(shè)計(jì)思想,需要的朋友可以參考下
    2014-09-09
  • C#如何利用結(jié)構(gòu)體對(duì)固定格式數(shù)據(jù)進(jìn)行解析

    C#如何利用結(jié)構(gòu)體對(duì)固定格式數(shù)據(jù)進(jìn)行解析

    這篇文章主要為大家詳細(xì)介紹了C#利用結(jié)構(gòu)體對(duì)固定格式數(shù)據(jù)進(jìn)行解析,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Unity3D Ui利用shader添加效果

    Unity3D Ui利用shader添加效果

    這篇文章主要為大家詳細(xì)介紹了Unity3D Ui利用shader添加效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • 將ocx文件轉(zhuǎn)換成C#程序引用的DLL文件的辦法

    將ocx文件轉(zhuǎn)換成C#程序引用的DLL文件的辦法

    將ocx文件轉(zhuǎn)換成C#程序引用的DLL文件的辦法,需要的朋友可以參考一下
    2013-03-03
  • C# 創(chuàng)建單例的多種方式

    C# 創(chuàng)建單例的多種方式

    這篇文章主要介紹了C# 創(chuàng)建單例的多種方式,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • 深入分析c# 繼承

    深入分析c# 繼承

    這篇文章主要介紹了c# 繼承的相關(guān)資料,文中講解的非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 結(jié)合.net框架在C#派生類中觸發(fā)基類事件及實(shí)現(xiàn)接口事件

    結(jié)合.net框架在C#派生類中觸發(fā)基類事件及實(shí)現(xiàn)接口事件

    這篇文章主要介紹了結(jié)合.net框架在C#派生類中觸發(fā)基類事件及實(shí)現(xiàn)接口事件,示例的事件編程中包括接口和類的繼承等面向?qū)ο蟮幕A(chǔ)知識(shí),需要的朋友可以參考下
    2016-02-02

最新評(píng)論