带有WCF数据的WPF应用程序-EF、Linq2Sql或WCF数据服务-似乎没有';简单'; 我正在做一些我认为很正常的事情(虽然我以前还没做过),我认为有一种“无脑子”的方法,但我还没找到它,这真的很令人沮丧。
我将创建一个WPF应用程序,这是一个面向数据的业务应用程序。我的数据将来自一个远程IIS服务器(由我控制),该服务器有一个标准的SQLServer2008数据库,因此Web服务/WCF似乎是未来的发展方向。远程服务需要(合理地)通过(WPF客户端的)用户用户名/密码登录安全 我不想使用第三方ORM产品,但我希望数据层(在服务和数据库之间)能够处理非常简单的ORM类型功能(我真的不想手工制作数据检索和持久化层)。我不太担心并发性,因为这将是一个相当简单的应用程序 我的选择似乎是以下之一:带有WCF数据的WPF应用程序-EF、Linq2Sql或WCF数据服务-似乎没有';简单'; 我正在做一些我认为很正常的事情(虽然我以前还没做过),我认为有一种“无脑子”的方法,但我还没找到它,这真的很令人沮丧。,wpf,wcf,linq-to-sql,entity-framework,ado.net,Wpf,Wcf,Linq To Sql,Entity Framework,Ado.net,我将创建一个WPF应用程序,这是一个面向数据的业务应用程序。我的数据将来自一个远程IIS服务器(由我控制),该服务器有一个标准的SQLServer2008数据库,因此Web服务/WCF似乎是未来的发展方向。远程服务需要(合理地)通过(WPF客户端的)用户用户名/密码登录安全 我不想使用第三方ORM产品,但我希望数据层(在服务和数据库之间)能够处理非常简单的ORM类型功能(我真的不想手工制作数据检索和持久化层)。我不太担心并发性,因为这将是一个相当简单的应用程序 我的选择似乎是以下之一: WCF上
任何帮助/建议都将不胜感激。这有点主观,但我会提供我的意见。 首先,忘记L2SQL——它基本上已经过时,没有EF4的完整POCO支持(可以做到,但需要XML修补或SQLMetal生成),这意味着序列化实体将是一场从左到右的实体克隆噩梦 我将使用ADO.NET实体框架,特别是实体框架4.0。您的模型将具有丰富的灵活性(包括应用OO原则(如继承)的能力) 使用自跟踪实体。是的,你必须装饰服务合同——这是设计的,原因很多 您可以始终使用DTO,而不是序列化实际的EF实体 OData的灵活性和简单性也非常好。但是,如果您仅通过单个客户端应用程序使用模型,那么专用服务层(WCF)是更好的方法 3) WCF数据服务-这看起来像 从表面上看,这是个不错的选择,但是 基本上,我只是 在中公开我的SQL数据库表 服务层上的原始数据 这可能是第一印象,但它从根本上是错误的。您在web上公开的是一个模型——您可以完全控制进入该模型的内容,以及您的WCF数据服务的消费者可以如何查看和/甚至更新该模型中的实体 这就是Entity Framework出现并大放异彩的地方(也是Linq to SQL严重失败的地方):您可以将数据库(或至少部分数据库)抓取到实体数据模型中,然后对其进行修改。您可以调整实体名称,使其与表名称完全不同,可以添加计算属性,可以删除某些属性,等等 如果你说的是一个相当简单的应用程序,我肯定会这么做:
- 抓取数据库并使用EF将其转换为实体数据模型
- 公开EDM over WCF数据服务,并定义哪些内容是只读的,哪些内容甚至可以在线更新