我有一个 WPF 应用程序,它在本地 .MDF 文件中使用 LINQ-to-SQL 。这个解决方案简单,简单,有效,即我设置了一次模型,然后通过LINQ在任何地方读/写数据:
using (var db = Datasource.GetContext())
{
oldItem = (from i in db.Infos
where i.Id == TheId
select i).SingleOrDefault();
CreateForm(db, FormBase, oldItem, Button_Save);
}
对Silverlight应用程序来说,这简单的等同于什么?
搜索我发现了一系列术语:
我想做的就是:
答案 0 :(得分:4)
专注于学习RIA数据服务或WCF数据服务。它将Silverlight中的LINQ查询转换为REST请求,并使您免于编写一些基础结构代码。整个想法是您的SL应用程序仅与Web服务通信,您无法访问物理数据库,就像您使用某些ORM(L2S)时一样。在SL中,您在浏览器的沙箱中,这会阻止您访问文件系统,包括db文件 其他方法是编写Web服务并通过它公开数据(GetArticleByID),然后从Silverlight中使用该服务。然后使用LINQ迭代获取的已加载数据。
答案 1 :(得分:3)
这是做什么 -
使用Visual Studio创建Silverlight应用程序。您将获得两个项目,一个使用Silverlight XAML,另一个是Web应用程序来托管它。
在Web应用程序中,添加您的DBML(Linq-2-SQL)文件。正常配置
在Web应用程序中,添加启用Silverlight的WCF服务
在WCF服务中,定义一些访问L2S数据上下文的方法
在Silverlight项目中,转到添加服务参考,点击“发现”并在
实例化服务,并访问您的方法
听起来有点复杂,但在实践中非常直接。
答案 2 :(得分:1)
不可能。 Silverlight无法直接访问数据库。中间需要某种Web服务层。我认为WCF和RIA服务使用最广泛。
答案 3 :(得分:1)
我强烈建议您在日程安排中清理一小时,然后观看此视频: - net-ria-services-intro
事实上,明确了2个小时,并与视频一起构建您自己正在构建的应用程序的副本。
答案 4 :(得分:1)
如果要开发常规LOB(业务线)应用程序,则应使用Web服务接口来跟踪数据库。 RIA服务或WCF数据服务是Microsoft当前的RAD(快速应用程序开发)技术,可以使这项任务更容易。
如果您正在谈论您需要的特殊情况:Silverlight 4在浏览器用完时可以与Windows上的COM服务器通信。这篇庞大的博客文章描述了与数据库的对话:Cutting Edge Silverlight 4 Com Features。
如果您正在寻找一种操作类似数据库的文件的方法,您可以查看csharp-sqlite项目。我认为它编译Silverlight 没有多少ado (快速和脏的概念证明在这里:Proof of Concept csharp-sqlite in Silverlight)。有了它,您可以在常规Silverlight应用程序中的用户隔离文件存储中创建和操作数据库文件,然后将其上传到您想要的任何位置。