Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在实体框架中,是否有更简单的方法将关系分配给新对象?_C#_Entity Framework_Entity Relationship - Fatal编程技术网

C# 在实体框架中,是否有更简单的方法将关系分配给新对象?

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

在我的示例中,我尝试创建一个新对象,该对象引用现有对象。我发现自己必须从数据库中检索完整的对象,以便从新对象中引用它们

对于代码中的任何小错误,我深表歉意-我是凭记忆工作的-我没有带代码

我的ViewModel包含对象本身、两个引用ID和引用对象的SelectList,因此我可以绑定到下拉列表:

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();
}