2010-04-27 45 views
0

我有點麻煩插入到使用實體框架的mssql數據庫。我想插入兩個表,其中表1中的一個字段是table2中的外鍵。實體框架:插入與一對一參考

這是我的代碼至今:

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中

我還在學習如何使用實體框架,所以我甚至不知道這是否是插入兩個引用表的正確方法。

任何人都可以在這方面啓發我嗎? :) 任何幫助將不勝感激!

謝謝!

+0

約40個媒體對象添加到數據庫並且指向context.AddToMedia()方法後,彈出錯誤消息。 – bomortensen 2010-04-27 10:11:21

回答

0

這意味着錯誤說的是什麼。你有一個主鍵違規。您只能使用給定的鍵值呼叫Context.AddTo...一次。找出哪個實體導致錯誤,並且您會看到上下文中已經有另一個實體具有相同的密鑰。