Сохранение изменений из 1 записи с использованием Entity Framework обновляет 2 записи в базе данных - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть база данных, содержащая продажи клиентов.Я пытаюсь обновить 1 запись с помощью Entity Framework, но когда я проверяю свою базу данных, две записи были обновлены

Моя таблица называется Customers и имеет следующие две записи:

NameID    GenderID      ItemID          ShopID    Cost      
--------------------------------------------------------
587651    1              464             9         NULL 
587651    1              512             9         NULL 

Я хочу обновить первую запись, которую я пытаюсь сделать, используя Entity Framework.

Это мой код:

using (var context = new Customers())
{
    var _customers = (from all in context.Customers
                      where (all.NameID == 587651) && 
                            (all.GenderID == 1) &&
                            (all.ItemID == 464) && 
                            (all.ShopID == 9)
                      select all).First();
    _customers.Cost = 100;
    context.SaveChanges();
}

После сохранения изменений в моей базе данных появляется следующее:

NameID    GenderID      ItemID         ShopID     Cost      
--------------------------------------------------------
587651    1              464             9         100  
587651    1              512             9         100

Есть идеи, что происходит?

1 Ответ

0 голосов
/ 15 апреля 2019

Хорошо, теперь я решил это, благодаря комментариям выше.Код, который определил мою таблицу, выглядел так:

public partial class Customers
{
    [Key]
    [Column(Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int NameJID { get; set; }

    [Key]
    [Column(Order = 1)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int GenderID { get; set; }

    public int? ItemID { get; set; }

    [Key]
    [Column(Order = 2)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ShopID { get; set; }

    public double? Cost { get; set; }
}

Как видите, первичный ключ включает только NameID, GenderID и ShopID.Обратите также внимание на то, как ItemID имеет значение null.Теперь я изменил код на это:

public partial class Customers
{
    [Key]
    [Column(Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int NameJID { get; set; }

    [Key]
    [Column(Order = 1)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int GenderID { get; set; }

    [Key]
    [Column(Order = 2)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ItemID { get; set; }

    [Key]
    [Column(Order = 3)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ShopID { get; set; }

    public double? Cost { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...