EntityFramework 6 AddOrUpdate不使用复合或复合主键

dev*_*nkd 10 c# sql sql-server entity-framework foreign-keys

这个问题一直是我周末的噩梦......我有一张表AddOrUpdate不能正常工作,它不断添加,但从不更新.

我想要做的就是当我向表中添加一个新实体时,AddOrUpdate我希望它检查AppointmentIdCompletionCodeId列,如果它们匹配而不是更新,否则添加.

表结构:

CREATE TABLE [dbo].[AppointmentCodes] (
    [Id]               INT IDENTITY (1, 1) NOT NULL,
    [AppointmentId]    INT NOT NULL,
    [Quantity]         INT NOT NULL,
    [CompletionCodeId] INT NOT NULL,
    CONSTRAINT [PK_AppointmentCodes] PRIMARY KEY CLUSTERED ([Id] ASC, [AppointmentId] ASC));
Run Code Online (Sandbox Code Playgroud)

^^不确定这是否正确.

public void AddOrUpdate(T entity)
{
    //uses DbContextExtensions to check value of primary key
    _context.AddOrUpdate(entity);
    Commit();
}
Run Code Online (Sandbox Code Playgroud)

方法

public void AddAppointmentCodes(List<AppointmentCode> appointmentCodes)
{
    appointmentCodes.ForEach(x => _appointmentCodeRepository.AddOrUpdate(x));
}
Run Code Online (Sandbox Code Playgroud)

Ger*_*old 17

你错过了这个超负荷AddOrUpdate:

_context.AppointmentCodes
        .AddOrUpdate(a => new { a.AppointmentId, a.CompletionCodeId },
                     appointmentCodes.ToArray());
Run Code Online (Sandbox Code Playgroud)