【发布时间】:2010-12-14 11:02:39
【问题描述】:
我正在做一些我认为很正常的事情(虽然我个人以前没有必要这样做),并且我认为会有一个“不费吹灰之力”的前进方式,但我还没有找到它- 这真是令人沮丧。
我将创建一个 WPF 应用程序,它是一个面向数据的业务应用程序。我的数据将来自具有标准 SQL Server 2008 数据库的远程 IIS 服务器(由我控制),因此 Web 服务/WCF 似乎是前进的方向。远程服务需要通过(WPF 客户端的)用户名/密码登录来确保(合理地)安全。
我不想使用第 3 方 ORM 产品,但我希望数据层(在服务和数据库之间)能够处理非常简单的 ORM 类型的功能(我真的不想手工制作数据检索和持久层)。我不太担心并发,因为这将是一个相当简单的应用程序。
我的选项似乎是以下之一:
- 基于 WCF 的 ADO.NET 实体框架
- WCF 上的 Linq2Sql
- WCF 数据服务
经过进一步调查,以上似乎都不是我所追求的“不费吹灰之力”
1) ADO.NET 实体框架 - 我对此进行了尝试,并遇到了通过 WCF 序列化对象的各种问题。即使当我尝试生成 POCO 实体并使用它们时,我也必须使用自定义属性来装饰服务合同,以使其始终不会出错,而且我似乎不得不手动操作任何东西,而不是平面对象图。在我看来,EF 根本不是为了通过服务公开而设计的。
2) Linq2Sql - 这似乎并不比 EF 好多少。我似乎不得不用手摇动太多东西。我已经尝试过设计器和 SQLMetal,但似乎没有什么“正常工作”——这一切都需要摆弄。
3) WCF 数据服务 - 从表面上看,这似乎是一个不错的选择,但从本质上讲,我似乎只是在服务层上“以原始方式”公开我的 SQL 数据库表。我无论如何都不是这项技术的专家,但这似乎是一种潜在的危险方法,最重要的是,它似乎不支持任何类型的访问安全作为标准(你必须破解它才能要求身份验证)。
正如我所说,这种情况感觉应该有一个不费吹灰之力的解决方案,但我仍然摸不着头脑。我已经用 .NET 技术做了很多事情,但老实说,这个领域在我的理解上有点漏洞,所以如果我的任何 cmets 或假设是幼稚的,我深表歉意。
当然,我可能只能在 EF 或 Linq2SQL 上做“hacky”,在这种情况下,我可以卷起袖子,接受我没有做的事实错过了一个更优雅的解决方案。
任何帮助/建议将不胜感激。
【问题讨论】:
标签: wpf wcf linq-to-sql entity-framework ado.net