我已经阅读了很多帖子,但找不到我的答案。我的问题有点具体。在我的 silverlight 项目中,我想从雅虎天气中获取天气数据,如温度、状态和日期,并通过从其 rss 更改将其保存到我的数据库中.so 使用 webclient 及其 DownloadStringAsync 和 DownloadStringCompleted 来获取数据。我还在服务器的模型文件夹中创建了一个演示模型(因为我想在我的服务中使用它)所以在我的 DownloadStringCompleted 事件处理程序中我做了这样的事情:
void xmlclient_DownloadStringCompleted(object sender,DownloadStringCompletedEventArgs e)
{
XNamespace yweather = "http://xml.weather.yahoo.com/ns/rss/1.0";
if (e.Error == null)
{
XElement x = XElement.Parse(e.Result);
weatherquery1 =
from items in x.Descendants("item")
select new BusinessApplication1.Web.Models.WeatherConditionModel
{
PubDate = items.Element(yweather +"condition").Attribute("date").Value,
Status = items.Element(yweather + "condition").Attribute("text").Value
};
}
}
这是在我的视图模型中,我测试了它所有的作品。我可以获取数据,也可以在数据网格或列表框中查看结果。现在我想将数据保存在我的数据库中。我希望它自动完成,而不是通过按钮或命令。例如,我希望它始终读取数据并每 5 分钟将其保存到数据库中。所以我创建了我的服务我创建了一个自定义插入,我可以自己塑造它:
private void MapwcModel(WeatherConditionTable wctable, WeatherConditionModel wcPM)
{
wctable.Status = wcPM.Status;
wctable.PubDate = wcPM.PubDate;
wctable.WeatherConditionID = wcPM.WeatherConditionID;
}
[Insert]
[Invoke]
public void InsertWeatherConditionData(WeatherConditionModel WeatherConditionData)
{
WeatherConditionTable wc = WeatherConditionContext.WeatherConditionTables.CreateObject();
MapwcModel(wc, WeatherConditionData);
wc.Status = WeatherConditionData.Status;
wc.PubDate = WeatherConditionData.PubDate;
WeatherConditionContext.WeatherConditionTables.AddObject(wc);
WeatherConditionContext.SaveChanges();
}
和我的获取数据:
public IQueryable<WeatherConditionModel> GetWeatherConditionData()
{
return from p in this.WeatherConditionContext.WeatherConditionTables
select new WeatherConditionModel
{
WeatherConditionID = p.WeatherConditionID,
Status = p.Status,
PubDate = p.PubDate,
};
}
现在我不知道如何强制它保存数据。我在我的 iewmodel 中写了这个但没有工作:
foreach (BusinessApplication1.Web.Models.WeatherConditionModel el in weatherquery1)
{
WeatherConditionDomainContext context = new WeatherConditionDomainContext();
EntityQuery<BusinessApplication1.Web.Models.WeatherConditionModel> weatherLoadQuery = context.GetWeatherConditionDataQuery();
context.Load<BusinessApplication1.Web.Models.WeatherConditionModel>(weatherLoadQuery);
context.SubmitChanges(delegate(SubmitOperation operation)
{
if (operation.HasError)
{
operation.MarkErrorAsHandled();
}
}, null);
}
我不知道如何强制插入方法起作用。有人请告诉我我错在哪里?我知道在某个地方。告诉我路。最好的祝福