我目前正在使用Microsoft的FOR XML PATH功能以XML格式从MS SQL Server中提取数据.我非常喜欢这个功能,但是使用特定于供应商的功能总是很不舒服.
是否有其他主要数据库供应商有类似的东西?
让我更具体地说明我正在寻找的功能类型
在MS SQL中,您可以使用此查询
SELECT so.id AS '@Id',
so.Code AS '@Code',
cu.Code AS 'Customer/@Code',
cu.Name AS 'Customer/@Name',
(SELECT Item_Num AS '@Item',
pa.Code AS '@PartCode'
FROM tblSalesItem si
LEFT JOIN tblPart pa ON pa.Id = si.Part_Id
WHERE si.SalesOrder_ID = so.Id
FOR XML PATH('SalesItem') , type)
FROM tblSalesOrder so
JOIN tblCustomer cu ON so.customer_id = cu.ID
FOR XML PATH('SalesOrder'), ROOT('SalesOrders')
Run Code Online (Sandbox Code Playgroud)
生成这个XML
<SalesOrders>
<SalesOrder Id="13" Code="C1002 ">
<Customer Code="ROBERTS " Name="Roberts Equipment Inc." />
<SalesItem Item="1" PartCode="FP-0001" …Run Code Online (Sandbox Code Playgroud) 我正在使用Python中的CMS,它使用reStructuredText(通过docutils)来格式化内容.我的很多内容都是从其他来源导入的,通常以未格式化的文本文档的形式出现.reST对此非常有用,因为默认情况下它使一切看起来都非常清晰.
但是,我遇到的一个问题是,我在网络服务器上将警告转储到stderr 并 注入我的页面内容.例如,我在网页上收到如下警告:
系统消息:警告/ 2(,第296行); 反向链接
我的问题是:如何抑制,禁用或重定向这些警告?
理想情况下,我很乐意将这些内容写入日志文件中,但如果有人可以告诉我如何关闭警告并将其注入我的内容中,那么这将是完美的.
负责将reST解析为HTML的代码:
from docutils import core
import reSTpygments
def reST2HTML( str ):
parts = core.publish_parts(
source = str,
writer_name = 'html')
return parts['body_pre_docinfo'] + parts['fragment']
Run Code Online (Sandbox Code Playgroud) 我正在开发一个ASP.NET MVC 3应用程序.我需要这个应用程序来使用我还需要实现的API.API应该都可以从ASP.NET MVC控制器操作和Ajax中获得.现在使用ASP.NET MVC制作API非常容易,但是可以从其他ASP.NET MVC网站操作中使用它吗?我想WCF很容易使用,因为它只是一个服务参考.
API的其他用户可以是Windows Phone和iPhone.
更新:
许多人只将API视为您使用数据的地方,但是您想要执行命令或执行操作的部分,例如添加客户或更改foo?
如何创建等效的Linq To Objects查询?
SELECT MIN(CASE WHEN p.type = "In" THEN p.PunchTime ELSE NULL END ) AS EarliestIn,
MAX(CASE WHEN p.type = "Out" THEN p.PunchTime ELSE NULL END ) AS LatestOUt
FROM Punches p
Run Code Online (Sandbox Code Playgroud) 我正在寻找与下面的代码等效的东西但是对于任何值类型而不必为每种数据类型编码switch语句.下面的代码无法编译,因为XmlConvert.ToString()没有接受和对象的重载.
int intValue = 10;
object boxedValue = (object)intValue;
string xmlValue = XmlConvert.ToString(boxedValue);
Run Code Online (Sandbox Code Playgroud)
换句话说,有没有比这更好的方法:
public static string ToXmlString(Type type, object value) {
switch(Type.GetTypeCode(type)) {
case TypeCode.Int32:
return XmlConvert.ToString((int) value);
case TypeCode.DateTime:
return XmlConvert.ToString((DateTime) value, XmlDateTimeSerializationMode.Unspecified);
case TypeCode.Boolean:
return XmlConvert.ToString((bool) value);
// TODO: Add case for all other value types!
default:
return value.ToString();
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个从Visual Studio 2012模板构建的默认mvc web api实例.它在默认的ValuesController中有以下路由和post方法 - MVC站点在初始创建时不会修改,而不是Post方法的内容.此外,我正在使用.NET framework 4.0,因为我计划将Azure作为目标.
注册方法
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Run Code Online (Sandbox Code Playgroud)
和Post方法
// POST api/values
public string Post([FromBody]string value)
{
if (value != null)
{
return "Post was successful";
}
else
return "invalid post, value was null";
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个控制台应用程序,它使用HttpClient来模拟发布到服务,但不幸的是,进入Post的"值"始终为null.在HttpClient上的PostAsync调用之后成功命中了Post方法.
我不清楚如何映射我的请求,以便值包含我传入的StringContent ...
static void Main(string[] args)
{
string appendUrl = string.Format("api/values");
string totalUrl = "http://localhost:51744/api/values";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/xml"); …Run Code Online (Sandbox Code Playgroud) 我正在构建一个.NET WebApi项目.我的一个ApiControllers返回一个数据表.在JSON格式中,它看起来都很好,但XML格式包含我不需要的垃圾.
所以,我在想,让我们编写自己的XML序列化.为此,我创建了一个实现IXmlSerializable的新类.它看起来像这样:
public class MyDataTable : IXmlSerializable
{
public MyDataTable(DataTable datatable)
{
this.Data = datatable;
}
public void WriteXml(XmlWriter writer)
{
writer.WriteStartElement("Test");
writer.WriteElementString("T", "hello world");
writer.WriteEndElement();
}
public XmlSchema GetSchema()
{
return null;
}
public void ReadXml(XmlReader reader)
{
throw new NotImplementedException();
}
public DataTable Data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我的XML看起来很棒,但我的JSON不是.JSON看起来像:
{"Data":[{"id":1,"name":"John"},{"id":2,"name":"Julia"}]}
Run Code Online (Sandbox Code Playgroud)
我真正想要的是这个:
[{"id":1,"name":"John"},{"id":2,"name":"Julia"}]
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以从JSON结果中删除"Data"字符串,而无需重写整个内容?或者是否有比这更好的解决方案?
我是ASP.NET Web API的新手.
我正在尝试构建一个API方法,可以处理来自搜索客户端的单个参数的多个值.
标准需要是OR搜索,例如.颜色搜索红色或蓝色或绿色.
我将颜色作为整数传递给我的方法.请在下面找到我的控制器方法,该方法无法编译并出现以下错误
错误:
错误1"诠释"不包含一个定义为"包含"和最佳推广方法重载"System.Linq.ParallelEnumerable.Contains(System.Linq.ParallelQuery,TSource)"有一些无效参数
错误2实例参数:无法从'int'转换为'System.Linq.ParallelQuery'
码:
public IQueryable<Items> GetItemByColour(string Colour)
{
int[] intArr = Array.ConvertAll(Colour.Split(','), s => int.Parse(s));
var query = from a in db.Items
where a.ItemsColour.Contains(intArr)
select a;
return query;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用HttpClient将一个GET请求发送到while循环内的服务器
while (cycle < maxcycle)
{
var searchParameters = new ASearchParameters
{
Page = cycle++,
id = getid
};
var searchResponse = await Client.SearchAsync(searchParameters);
}
Run Code Online (Sandbox Code Playgroud)
并且SearchAsync包含
public async Task<AuctionResponse> SearchAsync()
{
var uriString = "Contains a https url with parameters"
var searchResponseMessage = await HttpClient.GetAsync(uriString);
return await Deserialize<AuctionResponse>(searchResponseMessage);
}
Run Code Online (Sandbox Code Playgroud)
事情发生在每个请求之后,在下一个请求开始之前有一个延迟.你可以在提琴手的时间轴上看到这个,也可以在小提琴手中看到每个请求前都有"Tunnel To"example.com:443
