当我尝试在表中插入值时出现错误。
_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();
}
现在我得到错误:
当 IDENTITY_INSERT 为 OFF 时,无法在 BRIDownloadTypes-Table 的身份列中插入显式值。
我的 2 张桌子是
BRI下载类型
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
对象而不是对象,它也可以正常工作。我不知道那里发生了什么。