首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SqlException:无法为表中的标识列插入显式值

SqlException:无法为表中的标识列插入显式值
EN

Stack Overflow用户
提问于 2018-06-10 01:48:20
回答 1查看 245关注 0票数 0

首先,我很抱歉在Code中使用我的母语,但这是我的大学项目,我们的项目负责人命令我们这样写。我正在使用实体框架和C#进行数据库项目的工作。简而言之,我创建了名为"Osoba“的类和继承自"Osoba”的"Klient“类。问题是,当我试图添加新的"Klient“到数据库时,我仍然得到如下错误:

System.Data.Entity.Infrastructure.DbUpdateException:“更新条目时出错。有关详细信息,请参阅内部异常。“

SqlException:当IDENTITY_INSERT设置为OFF时,无法为表'Klient‘中的标识列插入显式值。

我在web上也研究过类似的问题,但它们都是因为在向表中添加新对象时“硬编码”ID而出现的。实际上我不会这么做的。

下面是Osoba类:

代码语言:javascript
复制
[Table("Osoba")]
public class Osoba
{
    public int ID { get; set; }
    public string Imie { get; set; }
    public string Nazwisko { get; set; }
    public string Telefon { get; set; }
    public string Adres { get; set; }
    public string Mail { get; set; }
    public int IloscTransakcji { get; set; }
    public string Typ { get; set; }

    public override string ToString()
    {
        return "Imie: " + Imie + "\t Nazwisko: " + Nazwisko + "\t Adres: " + Adres;
    }
}

Klient类:

代码语言:javascript
复制
[Table("Klient")]
public class Klient: Osoba
{
    public int ID { get; set; }
    public string Pracownik { get; set; }
    public int Sprzedane { get; set; }
    public int Kupione { get; set; }
    public string Preferencje { get; set; }

    public override string ToString()
    {
        return "Obslugujacy pracownik: " + Pracownik + "\t Sprzedane: " + Sprzedane.ToString() + "\t Kupione: " + Kupione.ToString();
    }
}

我的数据库上下文:

代码语言:javascript
复制
 public class BazyDanychContext : DbContext
{
    public BazyDanychContext() : base("ProjektBD8")
    {
    }

    public DbSet<Osoba> Osoba { get; set; }
    public DbSet<Klient> Klient { get; set; }
    public DbSet<Pracownik> Pracownik { get; set; }
    public DbSet<Nieruchomosc> Nieruchomosc { get; set; }
    public DbSet<Biuro> Biuro { get; set; }
    public DbSet<Dom> Dom { get; set; }
    public DbSet<Grunt> Grunt { get; set; }
    public DbSet<Hala> Hala { get; set; }
    public DbSet<Mieszkanie> Mieszkanie { get; set; }
    public DbSet<Spotkanie> Spotkanie { get; set; }
    public DbSet<Umowa> Umowa { get; set; }
} 

最后是我如何将新的Klient添加到数据库中:

代码语言:javascript
复制
private void KlientAdd_Click(object sender, RoutedEventArgs e)
    {
        using (var ctx = new BazyDanychContext())
        {

            Klient tmp = new Klient { Imie = KlientImie.Text, Nazwisko = KlientNazwisko.Text, Telefon = KlientTelefon.Text, Adres = KlientAdres.Text, Mail = KlientMail.Text, IloscTransakcji = Int32.Parse(KlientIloscTransakcji.Text), Typ = "Klient" , Pracownik = KlientPracownik.Text, Sprzedane = Int32.Parse(KlientSprzedane.Text), Kupione = Int32.Parse(KlientKupione.Text), Preferencje = KlientPreferencje.Text };
            ctx.Osoba.Add(tmp);
            ctx.SaveChanges();
        }
        InitTabs();
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-10 05:26:24

所以,对我来说,最后的解决方案是删除我项目中的所有迁移。删除我的数据库后,删除所有迁移,然后在没有任何迁移的情况下在我的项目中重新创建数据库,它终于起作用了。谢谢你的所有建议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50776986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档