我遇到“CodeFluent.Runtime.CodeFluentDuplicateException”的问题,我可能会遗漏一些基本的东西。
然而,我首先关注使用Servicestack和codefluents的博客,并制作了我自己的template。
我没有问题来获得实体,但做了一个put给了我一个例外。
好吧,也许我在模板中做错了所以我采取了另一种方法寻找答案我发现了一个使用Webapi和模板的“完整”项目,随时可以使用。 Generate ASP .NET Web API Controllers using Templates。
这会生成所有控制器,似乎可以工作。但是,当使用“put”时,我有相同的例外。
这是为Put
生成控制器代码的示例 public HttpResponseMessage Put([FromBody]Country value)
{
if (value == null || !value.Save())
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
return Request.CreateResponse(HttpStatusCode.OK, value);
}
这就是我在Xamarin.Forms解决方案中使用上面的控制器的方法。
public async Task UpdateAsync(Country update, bool isNewItem=false)
{
HttpClient client = new HttpClient();
// RestUrl = http://developer.xamarin.com:8081/api/todoitems{0}
var uri = new Uri(string.Format(Constants.RestUrl2, update.Id));
try
{
var json = JsonConvert.SerializeObject(update);
var content = new StringContent(json, Encoding.UTF8, "application/json");
HttpResponseMessage response = null;
if (isNewItem)
{
response = await client.PostAsync(uri, content);
}
else
{
response = await client.PutAsync(uri, content);
}
if (response.IsSuccessStatusCode)
{
Debug.WriteLine(@" TodoItem successfully saved.");
}
}
catch (Exception ex)
{
Debug.WriteLine(@" ERROR {0}", ex.Message);
}
}
对我遗失的任何建议?
感谢您的帮助 //格雷格
答案 0 :(得分:0)
我从softfluent支持
得到了答案” ..
另一种重复异常的情况是,当您启用乐观并发时,正在更新的实例的RowVersion为null。在这种情况下,存储过程将插入行而不是更新它。
..“
改变concurrencyMode = None做了诀窍