Значение Explict не может быть вставлено в таблицу, когда IDENTITY_INSERT выключен

Я получаю сообщение об ошибке при попытке вставить значение в мою таблицу._dltype является объектом типа BRIDownloadType,

using (var db = new BRIDatabase())
{
    foreach (var client in db.BRIClients)
    {
        var todo = new BRIToDo
        {
            BRIClient = client,
            BRIDownloadType = _dltype,
        };
        db.BRIToDos.Add(todo);
    }
    db.SaveChanges();
}

Теперь я получаю ошибку:

Значение Explict невозможно вставить в столбец Idendity в BRIDownloadTypes-Table, когда IDENTITY_INSERT установлен в OFF.

Мои 2 таблицы

BRIDownloadType

public class BRIDownloadType
{
    [Key]
    public int DlTypeId { get; set; }

    [Required]
    [StringLength(15)]
    public string DlType { get; set; }

    public string Username { get; set; }

    public string Password { get; set; }

    public virtual ICollection<BRIToDo> BRIToDo { get; set; }

}

BRITodo

public class BRIToDo
{
    [Key]
    public int ToDoId { get; set; }

    [ForeignKey("BRIClient")]
    public int ClientId { get; set; }

    [ForeignKey("BRITask")]
    public int TaskId { get; set; }

    public virtual BRIClient BRIClient { get; set; }

    public virtual BRITask BRITask { get; set; }

    [ForeignKey("BRIDownloadType")]
    public int DlTypeId { get; set; }

    public virtual BRIDownloadType BRIDownloadType { get; set; }**

}

Интересно, если я сделаю что-то с моим _dltype объект, я могу использовать это. Следующий код работает, и я не понимаю почему, я вставляю точно такой же объект.

using (var db = new BRIDatabase())
{
    var dl = db.BRIDownloadTypes.FirstOrDefault(c => c.DlTypeId == _dltype.DlTypeId);
    foreach (var client in db.BRIClients)
    {
        var todo = new BRIToDo
        {
            BRIClient = client,
            BRIDownloadType = _dltype,
        };
        db.BRIToDos.Add(todo);
    }
    db.SaveChanges();
}

Кто-нибудь может мне объяснить, почему последний подход работает, а первый выбрасывает эту ошибку? Я только добавил строку

var dl = db.BRIDownloadTypes.FirstOrDefault(c => c.DlTypeId == _dltype.DlTypeId)

Но я все еще вставляю тот же объект. Если я вставлю Id объекта вместо объекта, он также работает нормально. Я понятия не имею, что там происходит.

0 ответов

Другие вопросы по тегам