我的WCF中有两种方法,一种用于填充ListBox
,另一种用于删除我选择的ListBox
项。
我的问题是,当我运行我的Delete方法时,Data显示为null,也没有错误或异常。
编码运行平稳但没有任何变化,所选项目保留在列表框中。
WPF
private void bnFeedDel_Click(object sender, RoutedEventArgs e)
{
using (TruckServiceClient service = new TruckServiceClient())
{
service.DelFeedAsync(new FeedView
{
Id = lbFeed.SelectedIndex
});
}
}
public async Task LoadFeeds()
{
TruckServiceClient TSC = new TruckServiceClient();
try
{
List<ClientItems> feeditems = new List<ClientItems>();
foreach (var item in await TSC.GetFeedAsync())
{
feeditems.Add(new ClientItems
{
FId = item.Id,
FTitle = item.Title,
FContent = item.Content
});
}
lbFeed.ItemsSource = (feeditems.ToArray());
lbFeed.DisplayMemberPath = "FTitle";
}
catch (Exception)
{
throw;
}
}
WCF
public void DelFeed(FeedView feedview)
{
using (var result = new TruckDb())
{
var t = new Feed
{
Id = feedview.Id,
Title = feedview.Title,
Content = feedview.Content
};
result.Feed.Remove(t);
result.SaveChanges();
}
}
这对我来说还是新鲜的,所以对我的编码的任何意见/建议都将不胜感激。
答案 0 :(得分:0)
在对WCF服务的调用中,您传入了FeedView
的新实例,只设置了Id
属性:
service.DelFeedAsync(new FeedView { Id = lbFeed.SelectedIndex });
因此,当服务方法运行时,Title
和Content
都没有要设置的值(假设它们都是字符串,它们将为null或空字符串):
var t = new Feed {
Id = feedview.Id,
Title = feedview.Title,
Content = feedview.Content};
当您致电result.Feed.Remove(t);
时,不会删除任何内容,因为没有要删除的匹配项。
附加说明:将using
与WCF服务客户端一起使用是违反最佳做法的:https://msdn.microsoft.com/en-us/library/aa355056(v=vs.110).aspx