我需要使用Entity Framework将记录添加到数据库中。由于我是使用这种语法的新手,我不知道如何正确编写代码(以下是我最好的猜测)。
首先,代理必须将其信息插入Agent
表。此表生成一个称为SymNumber
的自增量主键。然后我需要使用SymNumber
并将其用作插入AgentIdentification
表的主键。
我已经运行了几次这个代码,并且我没有提出错误,但是因为我使用单元测试来测试代码,所以无法确定代理是否正确添加。其次,我知道我没有正确地抓住第一次插入后SymNumber
表生成的Agent
。 SymNumber
是Linq代码中设置为0的int值,在AgentIdentification
插入期间不会更改。
非常感谢任何帮助!
AgentResourcesEntities _db = new AgentResourcesEntities();
try
{
Agent agent = new Agent();
agent.EntityType = "P";
agent.FirstName = agentNewTraining.FirstName;
agent.LastName = agentNewTraining.LastName;
agent.LastChangeOperator = agentNewTraining.Requestor;
agent.LastChangeDate = DateTime.Now;
if (!String.IsNullOrEmpty(agentNewTraining.NameSuffix)) agent.NameSuffix = agentNewTraining.NameSuffix;
_db.Agent.AddObject(agent);
AgentIdentification agentIdentification = new AgentIdentification();
agentIdentification.SymNumber = agent.SymNumber;
agentIdentification.ReferenceType = "S";
agentIdentification.DummyReference = 0;
agentIdentification.LastChangeOperator = agentNewTraining.Requestor;
agentIdentification.LastChangeDate = DateTime.Now;
_db.AgentIdentification.AddObject(agentIdentification);
return true;
}
catch (Exception)
{
return false;
}
答案 0 :(得分:1)
首先你需要打电话
_db.SaveChanges();
让您的更改保持不变。
但是,如果您还需要同步(获取新生成的值)agent.SymNumber
,则需要在将其添加到上下文后立即调用SaveChanges()
。
所以代码就像:
/// ...... ////
_db.Agent.AddObject(agent);
_db.SaveChanges();
AgentIdentification agentIdentification = new AgentIdentification();
agentIdentification.SymNumber = agent.SymNumber; // sym number is now synchronized from DB
///...../////
_db.AgentIdentification.AddObject(agentIdentification);
_db.SaveChanges();
但是如果SymNumber
是外键,那么AgentIdentification
可以引用某个Agent
实例,你可以将这些实例与该引用联系起来,而不需要调用那个SaveChanges()
在中间。
答案 1 :(得分:0)
插入后调用_db.SaveChanges()
。