我们在WCF Web服务中使用DTO作为数据契约.这些DTO的目的是仅公开与特定API方法相关的信息.
我要求你们提供一些关于最佳实践的建议.
例如,考虑以下简单模型:
class Order
{
int CreatedBy { get; set; }
DateTime CreatedOn { get; set; }
string Description { get; set; }
int Id { get; set; }
string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
假设我们的API允许消费者创建,更新和获取订单,我们创建了以下DTO.为简单起见,删除了DataMember和DataContract属性.
创建方法:用户无法指定Id和CreatedOn属性,因此DTO如下所示:
class CreateOrderData
{
int CreatedBy { get; set; }
string Description { get; set; }
string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
更新方法:用户无法指定Id,CreatedOn和CreatedBy …
我们的应用程序使用Report Viewer 2012运行时进行报告,我们希望在安装程序中捆绑运行时.该组件可作为可再发行组件包下载,因此我假设可以将此运行时打包在我们的安装程序中并重新分发它.
但是,Report Viewer 2012依赖于Microsoft SQL Server 2012的Microsoft System CLR类型,我无法在任何地方找到我是否可以使用我们的安装程序重新分发此程序包?
有人可以指导我这个包的再分配要求吗?谢谢.
下载链接:
Report Viewer 2012运行时:http://www.microsoft.com/en-us/download/details.aspx?id = 35747
Microsoft SQL Server 2012的Microsoft System CLR类型:http://www.microsoft.com/en-us/download/details.aspx?id = 29065
应用程序:
此问题ProviderManifestToken与自动生成的edmx文件的属性有关.
根据使用的数据库版本(不同开发人员具有不同版本的数据库)从数据库更新模型,ProviderManifestToken属性的值可以设置为2008或2012.在我们停止支持SQL Server 2005之前,我们确保该属性的值保持为2005(有关更多信息,请参阅此SO文章).
我想知道2008年和2012年之间是否存在类似问题.这个属性到底有什么作用?我可以安全地将其保留为任何值,而不会在运行时造成任何问题吗?或者我应该确保始终将其设置为2008或始终设置为2012以确保应用程序与我们支持的数据库版本一起正常工作?
MSDN在描述此属性时不是很有用.它指出ProviderManifestToken是
一个字符串,用于标识正在使用的数据库服务器的版本.例如,SQL Server提供程序对SQL Server 2008使用字符串"2008".这不能为null,但可能为空.
谢谢!
.net ×1
c# ×1
datacontract ×1
dto ×1
licensing ×1
report ×1
reportviewer ×1
sql-server ×1
viewer ×1
wcf ×1