Значение 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
объекта вместо объекта, он также работает нормально. Я понятия не имею, что там происходит.