テーブルに値を挿入しようとするとエラーが発生します。
_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 の ID 列に明示的な値を挿入することはできません。
私の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; }
}
ブリトド
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
オブジェクトの代わりにオブジェクトのを挿入すると、正常に動作します。そこで何が起こっているのかわかりません。