如何解决带有 LinqToSql System.Data.Linq.DuplicateKeyException 的 C# 和 SQL Server 数据库错误:无法添加具有已在使用中的键的实体
我在 SQL Server 中创建了六个表,分别命名为 stagiaire
和 utilisateur
。最初,我将每个表中的主键设置为 ID。运行上面的代码立即返回以下输出:
Create Database gestionStagiaire
use gestionStagiaire
if OBJECT_ID('tempdb..ville') is not null
drop table ville
create table ville
(
id_ville int primary key,/*identity(1,1)*/
nom_ville varchar(50)
)
if OBJECT_ID('tempdb..stagiaire') is not null
drop table stagiaire
create table stagiaire
(
id_stagiaire int primary key identity(1,1),nom_stagiaire varchar(50),dateNaiss_stagiaire date,cin_stagiaire varchar(10),telephone_stagiaire varchar(15),email_stagiaire varchar(50),adresse_stagiaire varchar(100),id_ville int foreign key references ville(id_ville)
)
if OBJECT_ID('tempdb..ecole') is not null
drop table ecole
create table ecole
(
id_ecole int primary key identity(1,nom_ecole varchar(50),id_ville int foreign key references ville(id_ville)
)
if OBJECT_ID('tempdb..encadrant') is not null
drop table encadrant
create table encadrant
(
id_encadrant int primary key identity(1,nom_encadrant varchar(50)
)
if OBJECT_ID('tempdb..stage') is not null
drop table stage
create table stage
(
id_stage int primary key identity(1,sujet_stage varchar(100),dateDebut_stage date,dateFin_stage date,id_ecole int foreign key references ecole(id_ecole),id_stagiaire int foreign key references stagiaire(id_stagiaire),id_encadrant int foreign key references encadrant(id_encadrant)
)
if OBJECT_ID('tempdb..utilisateur') is not null
drop table utilisateur
create table utilisateur
(
login_utilisateur varchar(50) primary key,nom_utilisateur varchar(50),pass_utilisateur varchar(50)
)
C# 代码:
private void Button_AStagiaireDgv_Click(object sender,EventArgs e)
{
//DataClasses1DataContext dc = new DataClasses1DataContext(con);
//stagiaire newStagiaire = new stagiaire();
//newStagiaire.id_stagiaire=""
stagiaire sr = new stagiaire();
//sr.id_stagiaire = Convert.ToInt32(TextBox_IdStagiaire.Text);
sr.nom_stagiaire = TextBox_NomStagiaire.Text;
sr.dateNaiss_stagiaire = DateTime.Parse(DateTimePickerStagiaire.Text);
sr.ci_stagiaire = TextBox_CinStagiaire.Text;
sr.telephone_stagiaire = TextBox_TeleStagiaire.Text;
sr.email_stagiaire = TextBox_EmailStagiaire.Text;
sr.adresse_stagiaire = TextBox_AdresseStagiaire.Text;
//sr.id_ville = int.Parse(TextBox_IdVilleStagiaire.Text);
sr.id_ville = int.Parse(ComboBox_IdVilleStagiaire.Text);//.SelectedValue.ToString()
dc.stagiaire.InsertOnSubmit(sr);
dc.SubmitChanges();
charge_load();
/*
//int idstagiaire = int.Parse(TextBox_IdStagiaire.Text);
string nomstagiaire = TextBox_NomStagiaire.Text;
DateTime datenaiss = DateTime.Parse(DateTimePickerStagiaire.Text);
string cinstagiaire = TextBox_CinStagiaire.Text;
string telstagiaire = TextBox_TeleStagiaire.Text;
string mailstagiaire = TextBox_EmailStagiaire.Text;
string adressestagiaire = TextBox_AdresseStagiaire.Text;
int idville = int.Parse(ComboBox_IdVilleStagiaire.Text);
var st = new stagiaire
{
//id_stagiaire = idstagiaire,nom_stagiaire = nomstagiaire,dateNaiss_stagiaire = datenaiss,ci_stagiaire = cinstagiaire,telephone_stagiaire = telstagiaire,email_stagiaire = mailstagiaire,adresse_stagiaire = adressestagiaire,id_ville = idville
};
dc.stagiaire.InsertOnSubmit(st);
dc.SubmitChanges();
MessageBox.Show("Ajoute avec succes");
charge_load();
*/
}
解决方法
Create Database gestionStagiaire
use gestionStagiaire
if OBJECT_ID('tempdb..ville') is not null
drop table ville
create table ville
(
id_ville int primary key,/*identity(1,1)*/
nom_ville varchar(50)
)
if OBJECT_ID('tempdb..stagiaire') is not null
drop table stagiaire
create table stagiaire
(
id_stagiaire int primary key identity(1,1),nom_stagiaire varchar(50),dateNaiss_stagiaire date,cin_stagiaire varchar(10),telephone_stagiaire varchar(15),email_stagiaire varchar(50),adresse_stagiaire varchar(100),id_ville int foreign key references ville(id_ville)
)
if OBJECT_ID('tempdb..ecole') is not null
drop table ecole
create table ecole
(
id_ecole int primary key identity(1,nom_ecole varchar(50),id_ville int foreign key references ville(id_ville)
)
if OBJECT_ID('tempdb..encadrant') is not null
drop table encadrant
create table encadrant
(
id_encadrant int primary key identity(1,nom_encadrant varchar(50)
)
if OBJECT_ID('tempdb..stage') is not null
drop table stage
create table stage
(
id_stage int primary key identity(1,sujet_stage varchar(100),dateDebut_stage date,dateFin_stage date,id_ecole int foreign key references ecole(id_ecole),id_stagiaire int foreign key references stagiaire(id_stagiaire),id_encadrant int foreign key references encadrant(id_encadrant)
)
if OBJECT_ID('tempdb..utilisateur') is not null
drop table utilisateur
create table utilisateur
(
login_utilisateur varchar(50) primary key,nom_utilisateur varchar(50),pass_utilisateur varchar(50)
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。