Почему Entity-Framework дает мне ошибку о несуществующих данных, которые существуют - PullRequest
0 голосов
/ 04 сентября 2018

Я использую mvc5 и Entity Framework для миграции кода Я попытался заполнить таблицу, и я получил это сообщение об ошибке:

The INSERT statement conflicted with the FOREIGN KEY constraint 
"FK_dbo.Orders_dbo.Users_UserId". The conflict occurred in database 
"DbDemo.Models.DbbContext", table "dbo.Users", column 'Id'.
The statement has been terminated.

Я знаю, что поговорка о том, что данные должны уже существовать в таблице пользователей перед заполнением заказов, но userid у пользователей - это первичный ключ, поэтому я предположил, что он автоматически заполняется из-за своей идентичности = true! так почему я получил эту ошибку?

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string PhoneNum { get; set; }
    public string Location { get; set; }
    public string Type { get; set; }
}

public class Order
{
    [Key]
    [Column(Order = 1)]
    public int Id { get; set; }

    //ForeignKey from Items table for the composite key
    [Key]
    [Column(Order = 2)]
    public int? ItemId { get; set; }
    public Item Item { get; set; }

    //ForeignKey from Users table
    public int? UserId { get; set; }
    public User User { get; set; }

    public int Quantity { get; set; }
    public int? TotalPrice { get; set; } //why did i put this field??!
}

Это начальная миграция пользователя:

public partial class UsersSeed : DbMigration
{
    public override void Up()
    {
        Sql("insert into Users (Name,Email,Password,PhoneNum,Location,Type) values ('Khaled Tahboub', 'khaledk.tahboub@gmail.com', 'abc@123', '0797504280', 'Amman', 'A')");
        Sql("insert into Users (Name,Email,Password,PhoneNum,Location,Type) values ('Muath Mustafa', 'muathmustafa@gmail.com', 'abc@123', '0797504280', 'Amman', 'A')");
        Sql("insert into Users (Name,Email,Password,PhoneNum,Location,Type) values ('John Doe', 'JohnDoe@gmail.com', 'abc@123', '0797504280', 'Amman', 'B')");
    }

    public override void Down()
    {
    }
}

А это начальная миграция заказов:

public partial class OrdersSeed : DbMigration
{
    public override void Up()
    {
        Sql("insert into Orders (UserId, ItemId, Quantity) values (1, 1, 1)");
    }

    public override void Down()
    {
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...