我尝试通过WEB API
服务更新public class LibraryCategoryModel
{
public int ID { get; set; }
public string CategoryTitle { get; set; }
public byte[] Picture { get; set; }
}
app中的本地数据库。
我需要将现有实体ID的列表发送到Web服务,并从服务中获取其他实体。
我的模特
controller
和web api
中的 // GET: api/Category
public IQueryable<LibraryCategoryModel> GetLibraryCategoryModels(HttpRequestMessage request)
{
var string1 = request.Content.ReadAsStringAsync();
List<int> existingIdCategoryList = new List<int>();
existingIdCategoryList = JsonConvert.DeserializeObject<List<int>>(string1.Result);
var entityList = db.LibraryCategoryModels.ToList();
foreach (var Id in existingIdCategoryList)
{
entityList = entityList.Where(item => item.ID != Id).ToList();
}
return entityList as IQueryable<LibraryCategoryModel>;
}
private async void LoadDataFromNetwork(List<int> CategoryIdList)
{
if (NetworkHelper.IsInternet() || NetworkHelper.HasInternet())
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(serviceUrl);
// Set requast
using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "Api/Category"))
{
// Set the Accept header for BSON.
request.Headers.Accept.Clear();
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/bson"));
string Content = await Task.Factory.StartNew(() => JsonConvert.SerializeObject(CategoryIdList));
request.Content = new StringContent(Content, System.Text.Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
// Use BSON formatter to deserialize the result.
MediaTypeFormatter[] formatters = new MediaTypeFormatter[] { new BsonMediaTypeFormatter() };
try
{
var newCategorys = await response.Content.ReadAsAsync<LibraryCategoryModel[]>(formatters);
foreach (var category in newCategorys)
{
_dataService.InsertCategory(category);
AllCategoryList.Add(new LibraryCategoryViewModel(category));
_newCategoryIdListFromNetWork.Add(category.ID);
}
}
catch (Exception)
{
throw;
}
}
}
}
}
和我的要求
0x003b1240
这项工作对我来说,但我不确定这种方式是正确和最佳的解决方案。 请指导我。
答案 0 :(得分:2)
首先,如果它有效,并且您没有遇到任何具体问题,那么它可能已经足够了。
有很多方法可以改进,但定义了一种正确的方式&#34;或者&#34;最佳解决方案&#34;将始终以意见为基础。
那说,这里有一些建议:
LibraryCategoryModel
中是多余的。我将其删除。string1
是变量的名称,因为它没有任何意义。使用描述它所包含内容的内容,例如requestContent
。List<int>
,然后您可以免除需要处理任何意外输入。NetworkHelper
方法名称并未明确区分每个人的姓名。重命名它们以使它们的意义和差异更加清晰。LoadDataFromNetwork
做了很多事情,如果分成多种方法,可能会更易于维护:创建请求,发出请求和处理响应。_newCategoryIdListFromNetWork
变量看起来应该与这个方法更紧密地联系在一起,而不是类,任何与之相关的逻辑都可能过度分布在类中。