Я создаю веб-приложение для flick.Вставьте несколько дочерних записей с использованием linq в sql
У меня есть таблица flickrUser и таблица flickrPhoto
Я уже вставленная запись flickrUser и теперь я хочу, чтобы вставить некоторое flickrPhoto запись;
FlickrPhoto:
-photoid
-flickruserid
-id (PK)
вот как я пытаюсь вставить flickrphoto записи (flickrphoto хранится в таблице MyPhoto)
public void insertList(List<string> photoids, string flickruserid)
{
PicsPreciousLinqDataContext db = new PicsPreciousLinqDataContext();
for (int i = 0; i < photoids.Count; i++)
{
MyPhoto mf = new MyPhoto();
mf.photoId = photoids[i];
mf.source = "flickr";
var query = from b in db.FlickrUsers
where b.nsid == flickruserid
select b;
FlickrUser fUser = query.FirstOrDefault();
mf.FlickrUserId = fUser.nsid;
db.MyPhotos.InsertOnSubmit(mf);
}
db.SubmitChanges(); <= Cannot add an entity with a key that is already in use.
}
Я попробовал несколько вариаций на это, но и без успеха. Каков правильный способ вставки нескольких дочерних записей?
Любая помощь приветствуется.
Какой столбец является основным ключом для MyPhoto? Ошибка просто говорит вам, что в базе данных уже есть строка с ключом, который вы пытаетесь добавить. – hatchet
У меня есть другой столбец в MyPhoto, называемый идентификатором, который является PK и идентификатором уникального типа. – ThdK
. В стороне вы смотрите FlickrUser на каждой итерации цикла, когда ничего об этом не меняется. Вы должны сделать это только * один раз * до цикла. – cjk