【问题标题】:Calling Team Foundation Server(TFS) APIs via SQL Server stored procedure通过 SQL Server 存储过程调用 Team Foundation Server(TFS) API
【发布时间】:2019-12-02 06:10:42
【问题描述】:

我正在创建我的第一个 ASP.NET MVC 项目。我已经开始通过 C# 连接 TFS 并在 TFS 中添加错误。

var tfsURI = new Uri("http://test:8080/tfs");
var networkCredential1 = new NetworkCredential("test", "test!");

ICredentials credential = (ICredentials)networkCredential1;
Microsoft.VisualStudio.Services.Common.WindowsCredential winCred = new Microsoft.VisualStudio.Services.Common.WindowsCredential(credential);
VssCredentials vssCredentials = new VssCredentials(winCred);

using (TfsTeamProjectCollection collection = new TfsTeamProjectCollection(tfsURI, vssCredentials))
{
    collection.EnsureAuthenticated();
    WorkItemStore workItemStore = collection.GetService<WorkItemStore>();
    Project teamProject = workItemStore.Projects["Test"];
    WorkItemType workItemType = teamProject.WorkItemTypes["Bug"];

    WorkItem Defect = new WorkItem(workItemType);
    FileInfo fi = new FileInfo(@"C:\\Document.docx");
    Attachment tfsAttachment = new Attachment(fi.FullName);
    Defect.Attachments.Add(tfsAttachment);

    Defect.Title = "Testing from VS to TFS Bug";
    Defect.Description = "Testing from VS to entered Bug in to TFS.";
    Defect.Fields["Assigned To"].Value = "Test";

    Defect.Save();
} 

上面显示的这段代码可以正常工作。

但是使用 SQL Server 存储过程是否可以达到相同的结果?有什么方法可以连接到 TFS 并使用存储过程将 bug 添加到 TFS 中?

我有我的数据库,我想从 sql 存储过程连接到 TFS 并创建 WorkItem。通过 C# 我已经完成了上面的示例。但是,如果可以从存储过程中实现相同的目标,我需要任何示例。

【问题讨论】:

  • 在答案 @PatrickLu-MSFT 的 cmets 中,您说:'取决于表中的条目'您已经在 C# 中使用工作代码将 WorkItems 添加到 TFS -- 为什么不也使用 C# 和 ADO.NET 来发出 SQL 查询并直接在 C# 代码中获取表数据?

标签: c# sql .net sql-server tfs


【解决方案1】:

更新:

您可以从 SQL CLR 调用 Web 服务。一些教程可能会有所帮助:


不,为用户查询而设计的唯一数据库是仓库数据库。其他的明确不支持,不应直接查询。

不要直接对 TFS 数据库进行任何更改,否则您可能会失去 Microsoft 的支持

请在此处查看类似的问题:Add a stored procedure to TFS database

除了使用客户端 API 之外,您还可以使用 TFS 中的 Rest API 来做一些事情。

Work Items - Create

POST https://{instance}/{collection}/{project}/_apis/wit/workitems/${type}?api-version=5.0

【讨论】:

  • 你好,其实我不想直接改变 TFS 数据库,我只想连接 TFS 并通过 SQL 存储过程在 TFS 中创建 WortItem ......这可能......?我可以从存储过程中调用 TFS Rest API......
  • 我不想将存储过程添加到 TFS。我只想连接 TFS 并将 Workitem 添加到 TFS 但不像 C# 而是通过我的存储过程。
  • 我有我的数据库并依赖于我想通过 SQL 存储过程创建 workItem 的表之一中的条目......
  • @user2813740 造成误解,请看我的更新回复。这真的不是一个常见的场景。我不得不说,我对此并不熟悉,也没有测试过。但是分享了一些可能有用的教程。此外,建议您使用 C# 或 powershell 来处理 TFS 连接并创建 WorkItem。它更简单。
  • 感谢您的回复...由于性能问题我无法使用 CLR...我发现最好的方法是创建将在后台运行的窗口服务...
【解决方案2】:

我在大量研究后发现的最佳解决方案,因为 SP 是不可能的。解决方案是创建窗口服务。它将每 5 分钟在后台运行一次,并将监视 SQl 表(我的情况)的条目,如果存在 Bug 条目将在 TFS 中创建票证。 这是迄今为止最简单、最好的解决方案,而且不会影响性能或任何其他方面。

【讨论】:

    猜你喜欢
    • 2018-10-19
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2011-08-03
    • 2013-09-18
    • 2015-05-08
    相关资源
    最近更新 更多