0

I am using Entity framework 4, SQLite database with database first approach. I have attached my table structure as a snapshot.

I am able to write/ read data in the Bnb_Company and Bnb_Player tables, but when I try to enter a row into the Bnb_Game table, I get the following error.

enter image description here

Entities in 'MockStockDbEntities.Bnb_Game' participate in the 'Bnb_CompanyBnb_Game' relationship. 0 related 'Bnb_Company' were found. 1 'Bnb_Company' is expected.!

//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();
}
Donald Duck
  • 8,409
  • 22
  • 75
  • 99
girish
  • 13
  • 3

1 Answers1

1

Try using the Entity reference instead of the the Id value.

 Bnb_Game playerCompanyShare = new Bnb_Game();
 playerCompanyShare.Bnb_Company = company;
 playerCompanyShare.Bnb_Player = player;
 playerCompanyShare.Shares = company.DefaultShares;
 context.Bnb_Game.AddObject(playerCompanyShare);
Miguel Matos
  • 191
  • 7
  • at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter) at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache) at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options) at System.Data.Objects.ObjectContext.SaveChanges() at BnbBusiness.BnbComponent.ResetDataBase() in D:\MockStock\BullsNBearsV4\BullsNBears\BnbBusiness\BnbComponent.cs:line 485 at UnitTestProject.BnbComponentTest.ResetDataBaseTest() in D:\MockStock\BullsNBearsV4\BullsNBears\UnitTestProject\BnbComponentTest.cs: – girish Jan 22 '13 at 13:52
  • Not working.. Inner exception is '{"SQL logic error or missing database\r\ntable Bnb_Game has no column named Bnb_Company_Id"}' – girish Jan 22 '13 at 13:54
  • Are the navigation properties' association constraint properly defined in your model? Check if the foreign keys are correctly defined both in the database and in the model. – Miguel Matos Jan 22 '13 at 14:16
  • I have defined in the model. How do I check/ define in the database ? I have used 'Sqlite Administrator' tool for creating tables. – girish Jan 22 '13 at 14:34
  • Check the information here, I think it can help you setting the navigation properties correctly [http://stackoverflow.com/questions/4465855/entity-framework-add-navigation-property-manually](http://stackoverflow.com/questions/4465855/entity-framework-add-navigation-property-manually) – Miguel Matos Jan 22 '13 at 14:36