Symfony ArrayCollection 与 PersistentCollection

2024-04-26

据我了解,当您通过存储库查询数据库时,您会得到 PersistentCollection,而当您使用实体时,您会得到 ArrayCollection。

因此,考虑到我的用户实体有一对多的自引用关系。

在我的用户实体中,我有一个 setChildren 方法,它将用户的 ArrayCollection 作为参数。

<?php

namespace UserBundle\Entity;

use Abstracts\Entity\BaseModel;
use CertificateBundle\Entity\Certificate;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use EducationBundle\Entity\Education;
use LanguageBundle\Entity\Language;
use PostBundle\Entity\Post;
use ProfileBundle\Entity\Company;
use RoleBundle\Entity\Role;
use SkillBundle\Entity\Skill;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * User
 *
 * @ORM\Table(name="users")
 * @ORM\Entity(repositoryClass="UserBundle\Repository\Entity\UserRepository")
 * @UniqueEntity("email")
 * @UniqueEntity("username")
 */
class User implements UserInterface
{


    use BaseModel;
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;


    /**
     * @var string
     *
     * @ORM\Column(name="type", type="string", columnDefinition="ENUM('merchant', 'company', 'customer') ")
     */
    private $type;


    /**
     * @ORM\Column(type="string", unique=true)
     * @Assert\NotBlank()
     */
    private $username;

    /**
     * @var string
     *
     * @ORM\Column(type="string", length=255)
     * @Assert\NotBlank()
     */
    private $email;


    /**
     * @var string
     * @ORM\Column(type="string", nullable=true)
     */
    private $avatar = null;
    /**
     * @var string
     * @ORM\Column(type="string", nullable=true)
     */
    private $cover = null;


    /**
     * @ORM\OneToMany(targetEntity="PostBundle\Entity\Post", mappedBy="user", orphanRemoval=true, cascade={"persist", "remove"})
     */
    private $posts;

    /**
     * @ORM\OneToMany(targetEntity="EducationBundle\Entity\Education" , mappedBy="user" , orphanRemoval=true, cascade={"persist", "remove"})
     */
    protected $educations;


    /**
     * @ORM\OneToMany(targetEntity="SkillBundle\Entity\SkillUser" , mappedBy="user" , orphanRemoval=true, cascade={"persist", "remove"})
     */
    protected $skills;

    /**
     * @ORM\OneToMany(targetEntity="LanguageBundle\Entity\LanguageUser" , mappedBy="user" , orphanRemoval=true, cascade={"persist", "remove"})
     */
    protected $languages;


    /**
     * @ORM\OneToMany(targetEntity="ResumeBundle\Entity\Resume" , mappedBy="user" , cascade={"all"})
     */
    protected $resumes;


    /**
     * @ORM\OneToMany(targetEntity="CertificateBundle\Entity\CertificateUser" , mappedBy="user" , orphanRemoval=true, cascade={"persist", "remove"})
     */
    protected $certificates;


    /**
     * @ORM\OneToOne(targetEntity="ProfileBundle\Entity\Company", mappedBy="user")
     */
    protected $company;

    /**
     * @ORM\OneToOne(targetEntity="ProfileBundle\Entity\Customer", mappedBy="user")
     */
    protected $customer;

    /**
     * @ORM\OneToOne(targetEntity="ProfileBundle\Entity\Merchant", mappedBy="user")
     */
    protected $merchant;




    /**
     * @var string
     * @Assert\NotBlank()
     * @Assert\Length(min=4)
     * @ORM\Column(name="password", type="string", length=255)
     *
     */
    private $password;

    /**
     * @ORM\ManyToMany(targetEntity="RoleBundle\Entity\Role", inversedBy="users", cascade={"persist"})
     * @ORM\JoinTable(name="user_role", joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}, inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id")})
     */
    private $roles;



    /**
     * @ORM\ManyToOne(targetEntity="UserBundle\Entity\User", inversedBy="children")
     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="SET NULL")
     */
    protected $parent;


    /**
     * @ORM\OneToMany(targetEntity="UserBundle\Entity\User", mappedBy="parent", orphanRemoval=true, cascade={"persist", "remove"})
     *
     */
    protected $children;


    /**
     * @var array
     */
    public static $fields = [ 'email', 'username', 'id', 'avatar', 'cover', 'type'];

    /**
     * User Entity constructor.
     */
    public function __construct(/*EncoderFactoryInterface $encoderFactory*/)
    {
        //$this->encoderFactory = $encoderFactory;
        $this->posts        = new ArrayCollection();
        $this->skills       = new ArrayCollection();
        $this->languages    = new ArrayCollection();
        $this->certificates = new ArrayCollection();
        $this->educations   = new ArrayCollection();
        $this->children     = new ArrayCollection();

        dump($this->children);
        die();

    }




    /**
     * @param User $user
     * @return $this
     */
    public function setParent(User $user)
    {
        $this->parent = $user;

        return $this;
    }


    /**
     * @return $this
     */
    public function removeParent()
    {
        $this->parent = null;

        return $this;
    }



    /**
     * @param User $user
     * @return $this
     */
    public function addChild(User $user)
    {
        if(!$this->children->contains($user)){
            $this->children->add($user);
        }

        return $this;
    }


    /**
     * @param User $user
     * @return bool
     */
    public function hasChild(User $user)
    {
        return $this->children->contains($user);
    }



    /**
     * @param User $user
     * @return bool
     */
    public function isChildOf(User $user)
    {
        return $user->getChildren()->contains($this);
    }

    /**
     * @return ArrayCollection
     */
    public function getChildren()
    {
        return $this->children;
    }

    /**
     * @param User $user
     * @return $this
     */
    public function removeChild(User $user)
    {
        if($this->children->contains($user)){
            $this->children->removeElement($user);
        }

        return $this;
    }

    /**
     * @param ArrayCollection $users
     * @return $this
     */
    public function setChildren(ArrayCollection $users)
    {
        $this->children = $users;

        return $this;
    }


    /**
     * @return $this
     */
    public function removeChildren()
    {
        $this->children->clear();

        return $this;
    }


    /**
     * @param ArrayCollection $certificates
     * @return $this
     */
    public function setCertificates(ArrayCollection $certificates)
    {
        $this->certificates = $certificates;

        return $this;
    }


    /**
     * @param Certificate $certificate
     * @return $this
     */
    public function addCertificate(Certificate $certificate)
    {
        if(!$this->certificates->contains($certificate))
            $this->certificates->add($certificate);

        return $this;
    }

    /**
     * @param Certificate $certificate
     * @return $this
     */
    public function removeCertificate(Certificate $certificate)
    {
        if($this->certificates->contains($certificate))
            $this->certificates->removeElement($certificate);

        return $this;
    }

    /**
     * @return $this
     */
    public function removeCertificates()
    {
        $this->certificates->clear();

        return $this;
    }


    /**
     * @param ArrayCollection $skills
     * @return $this
     */
    public function setSkills(ArrayCollection $skills)
    {
        $this->skills = $skills;

        return $this;
    }


    /**
     * @param Skill $skill
     * @return $this
     */
    public function addSkill(Skill $skill)
    {
        if(!$this->skills->contains($skill))
            $this->skills->add($skill);

        return $this;
    }

    /**
     * @param Skill $skill
     * @return $this
     */
    public function removeSkill(Skill $skill)
    {
        if($this->skills->contains($skill))
            $this->skills->removeElement($skill);

        return $this;
    }

    /**
     * @return $this
     */
    public function removeSkills()
    {
        $this->skills->clear();

        return $this;
    }




    /**
     * @param ArrayCollection $languages
     * @return $this
     */
    public function setLanguages(ArrayCollection $languages)
    {
        $this->languages = $languages;

        return $this;
    }


    /**
     * @param Language $language
     * @return $this
     */
    public function addLanguage(Language $language)
    {
        if(!$this->languages->contains($language))
            $this->languages->add($language);

        return $this;
    }

    /**
     * @param Language $language
     * @return $this
     */
    public function removeLanguage(Language $language)
    {
        if($this->languages->contains($language))
            $this->languages->removeElement($language);

        return $this;
    }

    /**
     * @return $this
     */
    public function removeLanguages()
    {
        $this->languages->clear();

        return $this;
    }


    /**
     * @param ArrayCollection $posts
     * @return $this
     */
    public function setPosts(ArrayCollection $posts)
    {
        $this->posts = $posts;

        return $this;
    }

    /**
     * @param Post $post
     * @return $this
     */
    public function addPost(Post $post)
    {
        $this->posts->add($post);

        return $this;
    }

    /**
     * @param Post $post
     * @return $this
     */
    public function removePost(Post $post)
    {
        $this->posts->removeElement($post);

        return $this;
    }

    /**
     * @return $this
     */
    public function removePosts()
    {
        $this->posts->clear();

        return $this;
    }


    /**
     * @param ArrayCollection $educations
     * @return $this
     */
    public function setEducations(ArrayCollection $educations)
    {
        $this->educations = $educations;

        return $this;
    }

    /**
     * @param Education $education
     * @return $this
     */
    public function addEducation(Education $education)
    {
        $this->educations->add($education);

        return $this;
    }

    /**
     * @param Education $education
     * @return $this
     */
    public function removeEducation(Education $education)
    {
        $this->educations->removeElement($education);

        return $this;
    }

    /**
     * @return $this
     */
    public function removeEducations()
    {
        $this->educations->clear();

        return $this;
    }


    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @param integer $id
     * @return $this
     */
    public function setId($id)
    {
        $this->id = $id;

        return $this;
    }

    /**
     * @return mixed
     */
    public function getType()
    {
        return $this->type;
    }

    /**
     * @param mixed $type
     * @return $this
     */
    public function setType($type)
    {
        $this->type = $type;

        return $this;
    }


    /**
     * Set email
     *
     * @param string $email
     * @return User
     */
    public function setEmail($email)
    {
        $this->email = $email;

        return $this;
    }


    /**
     * @return string
     */
    public function getEmail()
    {
        return $this->email;
    }


    /**
     * @param $username
     * @return $this
     */
    public function setUsername($username)
    {
        $this->username = $username;
        return $this;
    }

    /**
     * @return mixed
     */
    public function getUsername()
    {
        return $this->username;
    }

    /**
     * @return array
     */
    public function getRoles()
    {
        return ['ROLE_USER', 'IS_AUTHENTICATED_ANONYMOUSLY'];
    }

    /**
     * @param $password
     * @return $this
     */
    public function setPassword($password)
    {
        //$password =$this->encoderFactory->getEncoder($this)->encodePassword($password, $this->getSalt());

        $this->password = $password;
        return $this;

    }

    /**
     * @return string
     */
    public function getPassword()
    {
        return $this->password;
    }

    /**
     *
     */
    public function getSalt()
    {
        return md5(sha1('somesalt'));
    }

    /**
     *
     */
    public function eraseCredentials()
    {
    }

    /**
     * @param $cover
     * @return $this
     */
    public function setCover($cover)
    {
        $this->cover = $cover;
        return $this;

    }

    /**
     * @return string
     */
    public function getCover()
    {
        return $this->cover;
    }

    /**
     * @param $avatar
     * @return $this
     */
    public function setAvatar($avatar)
    {
        $this->avatar = $avatar;
        return $this;

    }

    /**
     * @return string
     */
    public function getAvatar()
    {
        return $this->avatar;

    }


    /**
     * @param Role $roles
     */
    public function addRoles(Role $roles)
    {
        $this->roles[] = $roles;
    }

    /**
     * @return mixed
     */
    public function getRoles2()
    {
        return $this->roles;
    }

    /**
     * @return array
     */
    public function getRolesAsArray()
    {
        $rolesArray = [];
        foreach ($this->getRoles2() as $role) {
            $rolesArray[] = $role->getName();

        }
        return $rolesArray;

    }


    /**
     * @return Company
     */
    public function getCompany()
    {
        return $this->company;
    }

    /**
     * @param Company $company
     * @return $this
     */
    public function setCompany(Company $company)
    {
        $this->company = $company;

        return $this;
    }

}

这就是我想做的

$new_owner = $this->userRepository->findOneById($user_id, false);

$children = $old_owner->getChildren();

$old_owner->removeChildren();
$new_owner->setChildren($children);

我收到错误消息:

参数 1 传递给 Proxies__CG__\UserBundle\Entity\User::setChildren() 必须是 Doctrine\Common\Collections\ArrayCollection 的实例, 给出的 Doctrine\ORM\PersistentCollection

我应该将 setChildren 方法中的类型提示更改为 PersistentCollection 吗? 或者我需要完全改变我的方法?


简短回答:

/**
 * @param Doctrine\Common\Collections\Collection $users
 * @return $this
 */
public function setChildren(Doctrine\Common\Collections\Collection $users)
{
    $this->children = $users;

    return $this;
}

解释:

如果您深入研究 Doctrine Classes,您将看到以下结构:

数组集合是实现接口 Collection 的类:

class ArrayCollection implements Collection, Selectable

PersistentCollection 是扩展 AbstractLazyCollection 的类:

final class PersistentCollection extends AbstractLazyCollection implements Selectable

但 AbstractLazyCollection 实现了 Collection:

abstract class AbstractLazyCollection implements Collection

So:

集合是接口,您应该在方法中使用它setChildren().

这是因为原则使用延迟加载机制,该机制允许加载并非所有属性,而仅加载所需的属性。

类似问题:

教义 ManyToMany 返回 PersistentCollection 而不是 ArrayCollection https://stackoverflow.com/questions/38410665/doctrine-manytomany-return-persistentcollection-instead-of-arraycollection

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony ArrayCollection 与 PersistentCollection 的相关文章

  • 为什么我的会话仍然存在?

    我一定很愚蠢 因为似乎一件相当明显的事情现在让我完全困惑 我有一个会议 ie SESSION handbag id 在某个时刻 我需要彻底终止这个会话 ie at the start of the page session start el
  • 获取 YouTube 最高缩略图分辨率

    我想获得 youtube 最高缩略图 maxresdefault jpg 像这个 http i ytimg com vi Cj6ho1 G6tw maxresdefault jpg http i ytimg com vi Cj6ho1 G6
  • 无法访问 localhost/xampp/index.php

    我刚刚安装了 Windows 7 的 XAMPP 控制面板似乎工作正常 我启动了 MySql 和 Apache 我遇到的问题是 当我在浏览器 Google Chrome 中输入 localhost 时 它会将我发送到 http localh
  • PHP WCF 集成

    是不是如果我想支持php客户端访问我的服务 我必须有一个基本的http端点 这是因为php仍然只支持soap 1 1吗 据我所知 自从我使用 PHP 以来已经两年了 情况仍然如此 如果客户端应用程序将使用 PHP 的内置 SoapClien
  • 如何在 PHP 的 HTML 页面中显示错误消息?

    我有以下登录表单 login php 其中要求输入用户名和密码
  • 在哪里可以学习网络编程从入门到精通? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我尝试做教程 但它是无组织且无结构的 我在哪里可以学习 PHP 从初学者到大师 我正在寻找类似的网站w
  • docker 中的 php Curl 冲突 CURLOPT_FILE 和 CURLOPT_RETURNTRANSFER

    当我使用curl时CURLOPT FILE and CURLOPT RETURNTRANSFER选项 文件为空 没有任何curl错误 fp fopen saveTo w ch curl init fileUrl curl setopt ch
  • 使用 XPATH(和 PHP)从样式属性中选择背景 url

    我只想从此背景图像样式属性中选择 url 这可以通过 XPATH 实现吗 a href http www test com style background image none test a 我有类似的东西 url xpath gt qu
  • 是否可以用 PHP 编写电子邮件解析器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Facebook PHP-SDK 页面刷新后似乎丢失了 userID

    我似乎登录工作正常 我可以登录 接受应用程序 第一次 然后显示用户信息 例如姓名 图片 等 然而 当我刷新页面时 userid 又回到 0 我必须再次登录 我不确定问题是什么 我必须在每次页面加载时重新启动它还是什么 我不知道 我会发布一些
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • 带倒计时的php循环

    假设我从 400 开始计数器 我将如何执行一个向后运行直到 0 的 foreach 循环 伪代码 i 400 foreach SOMETHING do stuff i for i 400 i gt 0 i do stuff 其他方法 i 4
  • 字符串相似度的算法(比Levenshtein和similar_text更好)? php, Js

    在哪里可以找到比 levenshtein 和 phpimilar text 方法更准确地评估错误字符的拼写的算法 Example similar text jonas xxjon similar echo similar returns 6
  • PHP 检查当前日期是在设定日期之前还是之后

    我从数据库中提取一个日期 其格式为 dd mm YYYY 我想做的是检查当前日期 如果当前日期早于数据库中的日期 则需要打印数据库日期 如果是在之后 则需要打印 继续 有人能指出我正确的方向吗 if strtotime database d
  • 使用 php/regex 验证美国电话号码

    EDIT 我混合并修改了下面给出的两个答案 以形成完整的功能 现在它可以完成我想要的功能 然后是一些 所以我想我会将其发布在这里 以防其他人来寻找同样的东西 Function to analyze string against many p
  • PHP 拒绝从 var_dump、print 等输出数据

    我目前正在运行 WAMP 服务器 并且在过去的 30 分钟内一直在尝试弄清楚我的项目如何以及为什么不会输出任何指定的 PHP 数据 起初我以为是因为我有一个 htaccess文件的output buffering被禁用 所以我删除了它 仍然
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • Laravel 搜索关系

    我有两个相关的模型 我正在尝试在产品中进行搜索 并且仅显示实际搜索结果 而不是找到该产品的类别的所有产品 我不想搜索任何类别 因为无论搜索什么或找到什么 类别都会始终显示 Example I have the following categ
  • PayPal 网关已拒绝请求。安全标头无效(#10002:安全错误 Magento

    在 magento 中增加 PayPal 预付款 我已填写 magento admin 中的所有凭据 但是当我进入前端并单击 pay pal 按钮时 它给出了 PayPal 网关已拒绝请求 安全标头无效 10002 安全错误 我用谷歌搜索了
  • PHP更改小数点分隔符

    在某些情况下 PHP 会在操作后更改小数点分隔符 下面是一个示例 为什么小数点分隔符变成 这是一个多语言网站 在西班牙语版本中 区域设置设置为西班牙语 es ES 小数点分隔符为 这就是为什么正在改变 解决方案是强制 LC NUMERIC

随机推荐

  • 如何在 Angular Reactive 表单中根据条件以动态方式显示/隐藏字段

    我的场景是我有 3 个用户 1 admin将有 3 个字段电子邮件 名字 姓氏 2 雇员将有 4 个字段电子邮件 名字 姓氏 联系人 3 前台将有 5 个字段电子邮件 名字 姓氏 航空公司详细信息 供应商 人名 堆栈闪电战链接 https
  • 是否可以使用 UINavigationController 但隐藏其导航栏(用自定义工具栏替换它)和返回按钮

    我希望使用 UINavigationController 在 2 个 UIViewController 之间切换 AUIViewController BUIViewController与UIView AView BView相关 AView
  • 如何追加到 Swift 字典中的值数组

    假设我有一个字典 它接受字符串作为键和数组作为值 var d String Int d k Int 现在我想append 到下面的数组 k 我怎么做 Int d k append 1 error d k as Int append 1 er
  • 如何循环遍历列表并删除 groovy 中的项目?

    我试图弄清楚如何从循环内的 groovy 列表中删除项目 static main args def list1 1 2 3 4 for num in list1 if num 2 list1 remove num println list1
  • 小型开发团队的 Git 分支策略 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们有一个网络应用程序 几乎每天都会更新和发布 我们使用 git 作为我们的版本控制系统 我们当前的分支策略非常简单且不完善 我们有一个主分支
  • 扩大 x 轴上刻度线之间的间距

    我想扩大 R 中 x 轴刻度线之间的间距 我在 x 轴上有年份c 2005 2012 y 轴上每年一个值 说 A lt c 5 4 6 7 3 8 4 2 B lt c 2005 2012 plot B A type l 我现在需要扩大每个
  • 对象Vba读取项目

    我无法读取电影对象 我不知道为什么 我试图将 JSOn API 返回到 Excel 中的工作表 但我无法读取电影对象 Sub getData Dim Movie As Object Dim R As Object Dim scriptCon
  • 检查 datagridview 单元格是否为空或为空[重复]

    这个问题在这里已经有答案了 我必须更改单元格的背景颜色 当它们的值为字符串或空时 这是我编写的代码 与此处的其他代码类似 for int rowIndex 0 rowIndex lt dataGridView1 RowCount rowIn
  • 如何从Python字符串中提取国家/地区

    我有一些文本 其中可能包含也可能不包含国家 地区名称 例如 尼日利亚 Hotspot Network LTD 农村电话可行性研究 这就是我从中提取国家 地区名称的方法 在我的第一次尝试中 findcountry Nigeria Hotspo
  • kubernetes POD IP什么时候会改变?

    我正在尝试将一个整体应用程序移植到 k8s pod 理论上 Pod 被认为是短暂的 建议使用服务概念来提供静态 IP 但到目前为止 在我的测试中 我还没有看到 POD IP 被更改 那么现在的问题是 k8s 什么时候会为我的 POD 分配一
  • 如何在 ubuntu 20 中安装旧版本的 gcc -3 或 gcc-4

    我正在尝试安装旧版本的 gcc 4enter code here对于我的ubuntu创建构建目录 mkdir gcc build cd gcc build 下载源文件 wgethttp www netgull com gcc release
  • 使用 Google 翻译翻译整个 Google 表格

    我有一张用日语写的 Google 表格 我需要将其转换成英文 我知道我们可以使用googletranslate
  • SSIS 与 DTS 性能

    这么晚了才这么做似乎很疯狂 但是 我正在使用 Rocket Software UniVerse 源和 SQL 目标重建一些 ETL 基础设施 旧的目标平台是 Windows Server 2003 上的 SQL 2000 新平台是 Wind
  • 如何检查一个点是否在给定半径内?

    我有以下代码 需要很长时间才能执行 pandas 数据框df and df plants非常小 小于 1Mb 我想知道是否有任何方法可以优化这段代码 import pandas as pd import geopy distance imp
  • 如何在 Ruby 中获取从位置 N 到最后一个字符的子字符串?

    我想从字符串中获取从位置 N 到字符串末尾的子字符串 在 Ruby 中如何做到这一点 只需将字符串切片即可 string N 1
  • 简单版jQuery live函数

    是否有可能在任何地方获得一个纯 Javascript 函数用于事件处理程序 其功能与 jQuery 类似live 我需要能够将事件附加到尚未创建的对象 但由于依赖于 jQuery 核心 jquery livequery 和 jquery e
  • 如何使用Python和Pandas在时间翻转时添加24小时

    我必须分析一些日志 并基于此 我必须计算一些东西 但我坚持了一件事 在这里 我尝试以简单的形式重新创建我的问题 假设我有以下日志 堆栈溢出 txt file 23 58 03 458 23 58 13 446 23 58 23 447 23
  • Visual Studio 网站中的项目设置实际存储在哪里?

    在 VS2010 中使用网站 而不是 Web 应用程序 因此没有 csproj 文件 右键单击解决方案资源管理器中的 站点 节点并选择 属性页 会弹出一个对话框 其中包含 引用 生成 辅助功能 启动选项 MSBuild 选项 和 Silve
  • 下载 VSTS 附件

    有人知道如何使用 C 库检索附件 ID 并从 VSTS 下载 WorkItem 附件吗 我已经审查了附件样本 https github com Microsoft vsts dotnet samples blob master Client
  • Symfony ArrayCollection 与 PersistentCollection

    据我了解 当您通过存储库查询数据库时 您会得到 PersistentCollection 而当您使用实体时 您会得到 ArrayCollection 因此 考虑到我的用户实体有一对多的自引用关系 在我的用户实体中 我有一个 setChild