Еще раз проблемы Entity Framework и FK - PullRequest
0 голосов
/ 06 февраля 2010

У меня есть сущность с двумя ФК. Я пытался вставить запись в базу данных без успеха. Вот подходы, которые я использовал:

    valuePaymentBetToAdd.BetType = db.BetTypes.First(betType => betType.Id == valuePaymentBetToAdd.BetType.Id);
    valuePaymentBetToAdd.Lottery  = db.Lotteries.First(lotto => lotto.Id == valuePaymentBetToAdd.Lottery.Id);

В этом случае второй объект назначается, но при вызове метода SaveChanges я получаю сообщение об ошибке, в котором говорится, что свойства объекта лотереи были нулевыми.

    valuePaymentBetToAdd.BetTypeReference.EntityKey = new EntityKey(db.DefaultContainerName + ".BetType", "Id", valuePaymentBetToAdd.BetType.Id);
    valuePaymentBetToAdd.LotteryReference.EntityKey = new EntityKey(db.DefaultContainerName + ".Lottery", "Id", valuePaymentBetToAdd.Lottery.Id);

В этом случае я получаю еще одну странную ошибку. Когда объект добавляется в коллекцию.

Объект не может быть добавлен или присоединен, поскольку его EntityReference имеет значение свойства EntityKey, которое не соответствует EntityKey для этого объекта.

Я что-то упустил в этом случае?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2010

Попробуйте установить EntityReference так:

valuePaymentBetToAdd.BetTypeReference.EntityKey = b.BetTypes.First(betType => betType.Id == valuePaymentBetToAdd.BetType.Id).EntityKey;

у меня работает

0 голосов
/ 07 февраля 2010

Как насчет создания объекта-заглушки для BetType и Лотереи, в котором вы устанавливаете только свойство Id, затем присоединяете их к их соответствующим EntitySets, а затем устанавливаете эти объекты на свой объект Bet и сохраняете - что-то вроде:

Lottery lottery = new Lottery() { Id = valuePaymentBetToAdd.Lottery.Id };
BetType betType = new BetType() { Id = valuePaymentBetToAdd.BetType.Id };

MyContext.AttachTo("Lottery", lottery);
MyContext.AttachTo("BetType", betType);

valuePaymentBetToAdd.Lottery = lottery;
valuePaymentBetToAdd.BetType = betType;

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