Entity Framework: вставка со ссылкой один на один - PullRequest
0 голосов
/ 27 апреля 2010

У меня проблемы с вставкой в ​​базу данных mssql с использованием Entity Framework. Есть две таблицы, в которые я хочу вставить, где одно из полей таблицы 1 является внешним ключом в таблице 2.

Это код, который у меня есть:

Media media = null;
foreach(POI p in poiList)
{
    media = new Media() 
    {
        Path = p.ImagePath,
        Title = p.Title
    };

    if (media != null && !context.Media.Any(me => me.Title == p.ImageTitle))
    {
        context.AddToMedia(media);
        context.SaveChanges();
    }

    PointOfInterest poi = new PointOfInterest()
    {
        Altitude = 2000.0,
        ID = p.ID,
        Latitude = p.Latitude,
        Longitude = p.Longitude,
        LatitudeRoute = p.LatitudeRoute,
        LongitudeRoute = p.LongitudeRoute,
        Description = p.Description,
        Title = p.Title,
        DefaultImageID = media.ID,
    };    
    context.AddToPointOfInterest(poi);
}
context.SaveChanges();

Следующее дает мне эту ошибку:

Объект с таким же ключом уже существует в объекте ObjectStateManagerAn, с тем же ключом уже существует в ObjectStateManager

Я все еще изучаю, как использовать структуру сущностей, поэтому я даже не знаю, будет ли это правильным подходом для вставки в две ссылочные таблицы.

Может ли кто-нибудь просветить меня об этом? :) Любая помощь будет принята с благодарностью!

Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2010

Это означает только то, что говорит ошибка. У вас есть нарушение первичного ключа. Вы можете вызвать Context.AddTo... только один раз с данным значением ключа. Выясните, какая сущность вызывает ошибку, и вы увидите, что в контексте уже есть другая сущность с тем же ключом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...