C# 在实体框架中,是否有更简单的方法将关系分配给新对象?
在我的示例中,我尝试创建一个新对象,该对象引用现有对象。我发现自己必须从数据库中检索完整的对象,以便从新对象中引用它们 对于代码中的任何小错误,我深表歉意-我是凭记忆工作的-我没有带代码 我的ViewModel包含对象本身、两个引用ID和引用对象的SelectList,因此我可以绑定到下拉列表:C# 在实体框架中,是否有更简单的方法将关系分配给新对象?,c#,entity-framework,entity-relationship,C#,Entity Framework,Entity Relationship,在我的示例中,我尝试创建一个新对象,该对象引用现有对象。我发现自己必须从数据库中检索完整的对象,以便从新对象中引用它们 对于代码中的任何小错误,我深表歉意-我是凭记忆工作的-我没有带代码 我的ViewModel包含对象本身、两个引用ID和引用对象的SelectList,因此我可以绑定到下拉列表: public class GameEditViewModel { public Game MyGame { get; set; } public int HomeTeamId { get
public class GameEditViewModel
{
public Game MyGame { get; set; }
public int HomeTeamId { get; set; }
public int AwayTeamId { get; set; }
public SelectList<Team> { get; set; }
}
您可以看到这里的问题-我正在执行两个额外的数据库查询来检索模型,以便可以绑定到它们。真的,我应该只需要身份证
如果我只是设置HomeTeam.Id和AwayTeam.Id属性,上下文会认为我在添加新记录,并抱怨没有设置团队对象所需的所有引用
我想有一种更好/更有效的方法可以做到这一点,但我对EF还很陌生。有人能告诉我吗?这不需要数据库往返:
gameToSave.MyGame.HomeTeamReference.EntityKey = new EntityKey(context.DefaultContainerName+".Team", "Id", gameToSave.HomeTeamId)
你也可以这样做,这在我看来更漂亮:
public Game AddGame(GameEditViewModel gameToSave)
{
gameToSave.MyGame.HomeTeam = new Team { Id = gameToSave.HomeTeamId };
gameToSave.MyGame.AwayTeam = new Team { Id = gameToSave.AwayTeamId };
context.AddToGame(MyGame);
context.SaveChanges();
}
哇,真的吗?男人。。。我怎么会错过那个…?@Damovisa:对不起,但我不知道:)我想我只是认为它错过了。我到家后会核实的,但我相信你是对的。谢谢:)
public Game AddGame(GameEditViewModel gameToSave)
{
gameToSave.MyGame.HomeTeam = new Team { Id = gameToSave.HomeTeamId };
gameToSave.MyGame.AwayTeam = new Team { Id = gameToSave.AwayTeamId };
context.AddToGame(MyGame);
context.SaveChanges();
}