2012-06-11 2 views
0

У меня проблема с внешними ключами в EF 4.0.Внешний ключ с EF 4 C#

У меня есть небольшая игра с игроком. У этого Игрока могут быть некоторые персонажи в игре.

Итак, когда я хочу добавить символ в базу данных, я должен установить внешний ключ «PlayerId».

Это мой код, но убить при добавлении объекта в контексте модели:

using (DatabaseModelContainer model = new DatabaseModelContainer()) 
{ 
    Character c = new Character(); 
    c.Player.Id = idPlayer; 

    model.CharacterJeu.AddObject(c); 
    model.SaveChanges(); 
} 

Спасибо за ответы.

+3

У вас есть какая-либо ошибка или что? – Shyju

+0

Не можете описать ошибки, которые вы видите? Однако самым обычным способом добавления персонажа был бы через Player. I.e Найдите «игрока» из моделиконтейнера, используя «idPlayer». А затем 'player.Characters.Add (c)'; –

ответ

1

Странные вещи здесь

Character c = new Character(); 
c.Player.Id = idPlayer;//But instance c has no Player (well, I don't know the constructor of Character, but I may imagine there's no new Player() inside) 

Кстати, с моделью вы, кажется, вы не должны управлять FK, как вы делаете. Вы должны управлять свойствами Reference (navigation).

Вы можете сделать это таким образом.

Character c = new Character{ 
    Player = model.GetPlayerByid(idPlayer);//or something like that 
} 
0

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

MSDN: Attaching and Detaching Objects

Смежные вопросы