0

私はEntity Framework 4、SQLiteデータベースをデータベースファーストアプローチで使用しています。テーブル構造をスナップショットとして添付しました。

Bnb_Company および Bnb_Player テーブルでデータの書き込み/読み取りはできますが、Bnb_Game テーブルに行を入力しようとすると、次のエラーが発生します。

ここに画像の説明を入力

「MockStockDbEntities.Bnb_Game」のエンティティは、「Bnb_CompanyBnb_Game」関係に参加します。関連する 'Bnb_Company' が 0 件見つかりました。1 'Bnb_Company' が必要です。!

//Reset company values
if (context.Bnb_Company.Count() > 0)
{
    var companydetails = context.Bnb_Company.ToList();
    foreach (var company in companydetails)
    {
        company.ESC = 0;
        company.MarketValue = company.FaceValue;
    }
    context.SaveChanges();
}

if (context.Bnb_Player.Count() > 0)
{
    var playerDetails = context.Bnb_Player.ToList();
    //Reset Player values
    foreach (var player in playerDetails)
    {
        player.NetAmount = 0;
        player.Amount = 1000;
        if (context.Bnb_Company.Count() > 0)
        {
            var companyDetails = context.Bnb_Company.ToList();
            foreach (var company in companydetails)
            {
                if (context.Bnb_Game.Count() > 0 && (context.Bnb_Game.Where(b => b.PlayerId == player.Id && b.CompanyId == company.Id).Count() > 0))
                {
                    var specificCompanyShare = context.Bnb_Game.Where(b => b.PlayerId == player.Id && b.CompanyId == company.Id).FirstOrDefault();
                    specificCompanyShare.Shares = company.DefaultShares;
                }
                else
                {
                    Bnb_Game playerCompanyShare = new Bnb_Game();
                    playerCompanyShare.CompanyId = company.Id;
                    playerCompanyShare.PlayerId = player.Id;
                    playerCompanyShare.Shares = company.DefaultShares;
                    context.Bnb_Game.AddObject(playerCompanyShare);
                }
            }
        }

    }
    context.SaveChanges();
}
4

1 に答える 1

1

Id 値の代わりにエンティティ参照を使用してみてください。

 Bnb_Game playerCompanyShare = new Bnb_Game();
 playerCompanyShare.Bnb_Company = company;
 playerCompanyShare.Bnb_Player = player;
 playerCompanyShare.Shares = company.DefaultShares;
 context.Bnb_Game.AddObject(playerCompanyShare);
于 2013-01-22T13:50:10.487 に答える