Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net EF核心重复条目异常_Asp.net_C# 4.0_Console_Entity Framework Core - Fatal编程技术网

Asp.net EF核心重复条目异常

Asp.net EF核心重复条目异常,asp.net,c#-4.0,console,entity-framework-core,Asp.net,C# 4.0,Console,Entity Framework Core,EF core在我正在处理的项目中抛出一个异常 MySqlException:关键“customers.IX\u customers\u UserID”的重复条目“2” UserID在出现错误时会给出这样的错误。我不太清楚错误是什么,请帮助 public class Context : DbContext { public DbSet<Product> Products { get; set; } public DbSet<Category> Categ

EF core在我正在处理的项目中抛出一个异常

MySqlException:关键“customers.IX\u customers\u UserID”的重复条目“2”

UserID
在出现错误时会给出这样的错误。我不太清楚错误是什么,请帮助

public class Context : DbContext
{
    public DbSet<Product> Products { get; set; }

    public DbSet<Category> Categories { get; set; }

    public DbSet<User> Users { get; set; }

    public DbSet<Customer> Customers { get; set; }

    public DbSet<Address> Addresses { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        //optionsBuilder.UseSqlite("Data Source = Shop.db");
        //optionsBuilder.UseSqlServer(@"Data Source = (localdb)\v11.0; Initial Catalog=ShopDb; Integrated Security = SSPI;");
        optionsBuilder.UseMySql(@"server=localhost;port=3306;database=ShopDb1;user=root;password=admin123;");
    }

    public Context()
    {
        Database.EnsureCreated();

    }
}

public class User
{
    public int ID { get; set; }

    public string UserName { get; set; }

    public string Email { get; set; }

    public Customer Customer { get; set; }

    

    public List<Address> Addresses { get; set; }
}

public class Customer
{
    public int ID { get; set; }

    public int IdentifyNumber { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public User User { get; set; }
    [Required]
    public int UserID { get; set; }
}

public class Suplier
{
    public int ID { get; set; }

    public string Name { get; set; }

    public string TaxNumber { get; set; }

}

public class Address
{
    public int ID { get; set; }

    public string FullName { get; set; }

    public string Title { get; set; }

    public string Body { get; set; }


    public User User { get; set; }

    public int UserID { get; set; }
}

public class Product
{


    public int ProductID { get; set; }
    [MaxLength(100)]
    [Required]
    public string Name { get; set; }

    public decimal Price { get; set; }

    public int CategoryID { get; set; }
}

public class Category
{

    public int CategoryID { get; set; }
    [MaxLength(100)]
    [Required]
    public string Name { get; set; }
}

class Program
{
    static void Main(string[] args)
    {

        using (var db = new Context())
        {
            var customer = new Customer()
            {

                IdentifyNumber = 123,
                FirstName = "Remzi",
                LastName = "Balakishiyev",
                UserID = 2


            };
            db.Customers.Add(customer);
            db.SaveChanges();
        }
        Console.ReadLine();
    }

    static void InsertUsers()
    {
        var users = new List<User> {
            new User() { UserName ="Remzi",Email = "remzi.balakisiyev@gmail.com"},
            new User() { UserName ="Xezri",Email = "xezri.balakisiyev@gmail.com"},
            new User() { UserName ="Nurane",Email = "nurane.tarverdiyeva@gmail.com"}
        };
        using (var db = new Context())
        {
            db.Users.AddRange(users);
            db.SaveChanges();
        }
    }

    static void InsertAddresses()
    {
        var addresses = new List<Address> {
           new Address(){FullName = "Remzi Balakisiyev", Title = "Ev addressi", Body = "Masalli",UserID=1},
           new Address(){FullName = "Remzi Balakisiyev", Title = "Ish addressi", Body = "Baki",UserID=1},
           new Address(){FullName = "Xezri Balakisiyev", Title = "Ev addressi", Body = "Masalli",UserID=2},
           new Address(){FullName = "Nurane Tarverdiyeva", Title = "Ev addressi", Body = "Naxcivvan",UserID=3},
           new Address(){FullName = "Rena Heyderova", Title = "Ev addressi", Body = "Xachmaz",UserID=2},
           new Address(){FullName = "Memmed Bedelov", Title = "Ev addressi", Body = "Sumqayit",UserID=1}
        };
        using (var db = new Context())
        {
            db.Addresses.AddRange(addresses);
            db.SaveChanges();
            Console.WriteLine("Ishledi");
        }
    }
公共类上下文:DbContext
{
公共数据库集产品{get;set;}
公共数据库集类别{get;set;}
公共数据库集用户{get;set;}
公共数据库集客户{get;set;}
公共数据库集地址{get;set;}
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder)
{
//optionsBuilder.UseSqlite(“数据源=Shop.db”);
//optionsBuilder.UseSqlServer(@“数据源=(本地数据库)\v11.0;初始目录=ShopDb;集成安全性=SSPI;”);
optionsBuilder.UseMySql(@“server=localhost;port=3306;database=ShopDb1;user=root;password=admin123;”);
}
公共上下文()
{
数据库。请重新创建();
}
}
公共类用户
{
公共int ID{get;set;}
公共字符串用户名{get;set;}
公共字符串电子邮件{get;set;}
公共客户客户{get;set;}
公共列表地址{get;set;}
}
公共类客户
{
公共int ID{get;set;}
public int identificationnumber{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共用户{get;set;}
[必需]
public int UserID{get;set;}
}
公共类供应商
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共字符串TaxNumber{get;set;}
}
公共课堂演讲
{
公共int ID{get;set;}
公共字符串全名{get;set;}
公共字符串标题{get;set;}
公共字符串体{get;set;}
公共用户{get;set;}
public int UserID{get;set;}
}
公共类产品
{
public int ProductID{get;set;}
[MaxLength(100)]
[必需]
公共字符串名称{get;set;}
公共十进制价格{get;set;}
public int CategoryID{get;set;}
}
公共类类别
{
public int CategoryID{get;set;}
[MaxLength(100)]
[必需]
公共字符串名称{get;set;}
}
班级计划
{
静态void Main(字符串[]参数)
{
使用(var db=new Context())
{
var customer=新客户()
{
IdentifyNumber=123,
FirstName=“Remzi”,
LastName=“Balakishiyev”,
UserID=2
};
db.Customers.Add(客户);
db.SaveChanges();
}
Console.ReadLine();
}
静态空隙插入器()
{
var users=新列表{
新用户(){UserName=“Remzi”,Email=“Remzi。balakisiyev@gmail.com"},
新用户(){UserName=“Xezri”,Email=“Xezri”。balakisiyev@gmail.com"},
新用户(){UserName=“Nurane”,Email=“Nurane”。tarverdiyeva@gmail.com"}
};
使用(var db=new Context())
{
db.Users.AddRange(用户);
db.SaveChanges();
}
}
静态void insertaddress()
{
var地址=新列表{
新地址(){FullName=“Remzi Balakisiyev”,Title=“Ev addressi”,Body=“Masalli”,UserID=1},
新地址(){FullName=“Remzi Balakisiyev”,Title=“Ish addressi”,Body=“Baki”,UserID=1},
新地址(){FullName=“Xezri Balakisiyev”,Title=“Ev addressi”,Body=“Masalli”,UserID=2},
新地址(){FullName=“Nurane Tarverdiyeva”,Title=“Ev addressi”,Body=“Naxcivvan”,UserID=3},
新地址(){FullName=“Rena Heyderova”,Title=“Ev addressi”,Body=“Xachmaz”,UserID=2},
新地址(){FullName=“Memmed Bedelov”,Title=“Ev addressi”,Body=“Sumqayit”,UserID=1}
};
使用(var db=new Context())
{
db.Addresses.AddRange(地址);
db.SaveChanges();
Console.WriteLine(“Ishledi”);
}
}

对于每个客户实体,框架会添加一个主键为2的新用户。要添加与id为2的用户的关系,需要在用户属性中插入一个用户对象

var customer = new Customer()
        {

            IdentifyNumber = 123,
            FirstName = "Remzi",
            LastName = "Balakishiyev",
            User = db.Users.FirstOrDefault(x => x.ID == 2)


        };
db.Customers.Add(customer);
db.SaveChanges();