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# 要在实体框架中创建关系,是否必须进行select查询?_C#_Entity Framework_Linq To Entities - Fatal编程技术网

C# 要在实体框架中创建关系,是否必须进行select查询?

C# 要在实体框架中创建关系,是否必须进行select查询?,c#,entity-framework,linq-to-entities,C#,Entity Framework,Linq To Entities,我想创建一个Blog对象,它与用户之间有一个关系。要创建关系,我是否必须首先选择用户实体,然后将其设置为博客对象的用户属性?在实体框架中,示例建议将用户对象设置为ViewState,并在需要创建关系(如基本缓存)时检索它 这有必要吗?还有别的办法吗?(就像在linq to sql中,只设置外键而不选择。) 这里是我的代码示例 Blog blog = new Blog { Name = blogName, Sl

我想创建一个Blog对象,它与用户之间有一个关系。要创建关系,我是否必须首先选择用户实体,然后将其设置为博客对象的用户属性?在实体框架中,示例建议将用户对象设置为ViewState,并在需要创建关系(如基本缓存)时检索它

这有必要吗?还有别的办法吗?(就像在linq to sql中,只设置外键而不选择。)

这里是我的代码示例

Blog blog = new Blog
            {
                Name = blogName,
                Slogan = slogan,
                User = Entities.Users.First(u => u.Id == userId)
            }

Entities.AddToBlogs(blog);
Entities.SaveChanges();

编辑(给另一个提问的机会):有什么不清楚或其他的吗?

这是目前官方不支持的

不过,你或许可以绕过它。我还没有尝试过这个,但这个想法在概念上似乎很合理:

  • 创建新用户,并适当设置ID。将其附加到对象上下文
  • 告诉对象上下文忘记迄今为止所做的任何更改
  • 现在创建一个新博客,并将User属性设置为您刚刚创建的用户
  • 保存对对象上下文的更改
  • 显然,如果用户实际上不存在于数据库中,这将严重失败


    这似乎是个好主意,但似乎行不通(

    我们使用以下解决方案设置外键,而无需从上下文检索相应的实体

    Blog blog = new Blog            
    {                
       Name = blogName,                
       Slogan = slogan,                
       UsersReference.EntityKey = new EntityKey("EntityModel.Users", "UserId", userId)            
    }
    
    Entities.AddToBlogs(blog);
    Entities.SaveChanges();
    

    还是没有答案?你们让我惊讶:)是不清楚还是其他什么?不幸的是,这并没有解决问题。当我这样做的时候,博客的属性被尝试添加,并且由于限制引发了一个异常。这样做的方法是什么?我在DataContext上找不到任何方法来执行此操作。所以我使用了acceptillchanges()。acceptillchanges应该可以。检查实体状态以确保。正如我所说,这是我的猜测;你的要求没有得到官方支持,我查过了。但当我尝试添加博客实体时,用户的状态变为添加状态,无法手动设置。好的,我们可以将该想法添加到现实生活中不起作用的好想法的容器中,然后:(