解決Entity Framework中自增主鍵的問題
Entity Framework中自增主鍵問題
當(dāng)實體類中有int類型的字段,并且該字段對應(yīng)數(shù)據(jù)庫中的主鍵,那么Entity Framework會自動將該字段設(shè)為自動增長。
若此時數(shù)據(jù)庫中對應(yīng)的主鍵并非是自動增長的,則在插入數(shù)據(jù)時會出現(xiàn)異常。
舉個例子:
若有如下實體類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會將實體類Test的Id字段設(shè)為自動增長的,而此時表Test中的主鍵Id并沒有設(shè)為自動增長。若此時向數(shù)據(jù)表Test插入數(shù)據(jù)則會出現(xiàn)異常。
Mysql數(shù)據(jù)庫雖然會插入成功,但插入數(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
在實體類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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#導(dǎo)入EXCEL時如何讀取單元格中的圖片(WPS)
這篇文章主要介紹了C#導(dǎo)入EXCEL時如何讀取單元格中的圖片(WPS)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
C#代碼實現(xiàn)將PowerPoint轉(zhuǎn)HTML格式
在企業(yè)辦公、在線課件展示等場景中,將 PowerPoint(PPT/PPTX)轉(zhuǎn)換為 HTML 格式是常見需求,下面我們就來看看如何通過 C# 結(jié)合 Free Spire.Presentation for .NET 組件實現(xiàn)這一轉(zhuǎn)換吧2026-02-02
C#結(jié)合JS解決Word添加無效位圖導(dǎo)致進(jìn)程停滯的問題
這篇文章主要為大家詳細(xì)介紹了C#如何結(jié)合JS解決Word添加無效位圖導(dǎo)致進(jìn)程停滯的問題,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11
C# 連接SQL數(shù)據(jù)庫的方法及常用連接字符串
這篇文章主要介紹了C# 連接SQL數(shù)據(jù)庫的方法及常用連接字符串,有需要的朋友可以參考一下2014-01-01
C#實現(xiàn)在Form里面內(nèi)嵌dos窗體的方法
這篇文章主要介紹了C#實現(xiàn)在Form里面內(nèi)嵌dos窗體的方法,涉及C#針對Form窗體的設(shè)置及使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09
c# 實現(xiàn)康威生命游戲(細(xì)胞自動機(jī))的示例
這篇文章主要介紹了c# 實現(xiàn)康威生命游戲(細(xì)胞自動機(jī))的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-02-02
C# 進(jìn)行圖片壓縮的示例代碼(對jpg壓縮效果最好)
這篇文章主要介紹了C# 進(jìn)行圖片壓縮的示例代碼,幫助大家更好的利用c# 處理圖片,提高辦公效率,感興趣的朋友可以了解下2020-11-11

