在Serialize/DeSerialize实体并使用JSON.NET时,是否可以覆盖默认的WCF DataContractSerializer行为?
我有以下服务合同来处理City实体.出于设计原因,City实体具有IsReference = true,因此默认的DataContractSerializer会引发错误.
对于"GET"方法,我可以使用JsonConvert.DeserializeObject处理这种情况,但是使用"PUT,POST,DELETE"方法DataContractSerializer优先,并且失败抱怨IsReference实体无法序列化.
我发现这个Post实现IOperationBehavior并提供我自己的Serializer但我不知道如何将Json.NET与此集成.而且我认为应该有更直接的方法.
我很感激有关此方案的任何帮助或指导,或对其他方法的建议.
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class CityService
{
[Description("Get all Cities")]
[WebGet(UriTemplate = "")]
public Message Cities()
{
}
[Description("Allows the details of a single City to be updated.")]
[WebInvoke(UriTemplate = "{code}", Method = "PUT")]
public Message UpdateCity(string code, City city)
{
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢
霍山
在我的VS2010解决方案,我已经根据T4Scaffolding的NuGet设置PowerShell脚本和T4模板的,一切工作脚手架罚款及相关T4的,但在我的剧本之一,我需要触发位于另一个项目T4模板.
这个有什么简单的Powershel cmdlet吗?只运行模板而不传递任何参数或值.
谢谢.
使用以下简单实体类,EF4.1 Code-First将UserId
在初始化数据库时为PK 列创建聚簇索引.
public class User
{
[Key]
public int UserId { get; set; }
public int AppId { get; set; }
public string UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
出于性能的考虑,我的设计目标是保持生成的Users
表物理集群根据AppId
coulmn而不是PK.
在我的Initializer类中,我试图手动删除自动生成的PK聚簇索引并创建我需要的任何聚簇索引,但这里没有线索来预测PK__Users__25518C17
索引的自动生成名称!
我是Code-First世界的新手,并且真的不知道我的设计目标是否有任何解决方法.
提前致谢
sql-server entity-framework code-first ef-code-first entity-framework-4.1
.net-4.0 ×1
code-first ×1
json ×1
json.net ×1
powershell ×1
rest ×1
sql-server ×1
t4 ×1
wcf ×1