C# 向具有2个外键的表中添加行时出错
我正在使用EntityFramework4,SQLite数据库和数据库优先的方法。我已将我的表结构附加为快照 我能够在Bnb_公司和Bnb_玩家表中写入/读取数据,但是当我尝试在Bnb_游戏表中输入一行时,我得到以下错误 “MockStockDbEntities.Bnb_游戏”中的实体参与“Bnb_公司Bnb_游戏”关系。找到0个相关的“Bnb_公司”。预计将有1家“Bnb_公司”C# 向具有2个外键的表中添加行时出错,c#,visual-studio-2010,entity-framework,sqlite,C#,Visual Studio 2010,Entity Framework,Sqlite,我正在使用EntityFramework4,SQLite数据库和数据库优先的方法。我已将我的表结构附加为快照 我能够在Bnb_公司和Bnb_玩家表中写入/读取数据,但是当我尝试在Bnb_游戏表中输入一行时,我得到以下错误 “MockStockDbEntities.Bnb_游戏”中的实体参与“Bnb_公司Bnb_游戏”关系。找到0个相关的“Bnb_公司”。预计将有1家“Bnb_公司” //Reset company values if (context.Bnb_Company.Count() &
//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();
}
尝试使用实体引用而不是Id值
Bnb_Game playerCompanyShare = new Bnb_Game();
playerCompanyShare.Bnb_Company = company;
playerCompanyShare.Bnb_Player = player;
playerCompanyShare.Shares = company.DefaultShares;
context.Bnb_Game.AddObject(playerCompanyShare);
在System.Data.EntityClient.EntityAdapter.Update(在System.Data.Objects.ObjectContext.SaveChanges()的System.Data.Mapping.Update.Internal.UpdateTranslator.Update(在System.Data.EntityClient.EntityAdapter.Update(在System.Data.Objects.ObjectContext.SaveChanges(保存选项选项选项))中在D:\MockStock\BullsNBearsV4\BullsNBears\BnbBusiness\BnbComponent.cs中的BnbBusiness.BnbComponent.ResetDataBase()处:在D:\MockStock\BullsNBearsV4\BullsNBears\UnitTestProject\bnbcomponents.cs中的UnitTestProject.bnbcomponents.ResetDataBaseTest()处的第485行:不工作。。内部异常为“{”SQL逻辑错误或缺少数据库\r\ntable Bnb_Game没有名为Bnb_Company_Id的列“}”?检查数据库和模型中是否正确定义了外键。我已经在模型中定义了外键。如何在数据库中检查/定义?我使用了“Sqlite管理员”工具来创建表。请检查此处的信息,我认为它可以帮助您正确设置导航属性