Ado.net Ado实体最佳实践

Ado.net Ado实体最佳实践,ado.net,Ado.net,我正在用ADO.net实体做一件有趣的事情,需要你的意见。通常会创建一个解决方案来提供一个服务(WCF或web服务),以允许通过实体框架访问DB,但我工作的应用程序在内部运行,并且几乎总是可以访问域。问题是,为应用程序创建一个数据服务以从WPF应用程序连接到实体框架,或者我可以直接从WPF应用程序连接到实体框架,这是否是一个好的做法。在这种情况下,最佳实践是什么,两种不同方法的优缺点是什么。这实际上取决于复杂程度和所需的耦合/模块化程度。我认为一个很好的折衷办法是在它自己的库中创建一个EF模型,

我正在用ADO.net实体做一件有趣的事情,需要你的意见。通常会创建一个解决方案来提供一个服务(WCF或web服务),以允许通过实体框架访问DB,但我工作的应用程序在内部运行,并且几乎总是可以访问域。问题是,为应用程序创建一个数据服务以从WPF应用程序连接到实体框架,或者我可以直接从WPF应用程序连接到实体框架,这是否是一个好的做法。在这种情况下,最佳实践是什么,两种不同方法的优缺点是什么。

这实际上取决于复杂程度和所需的耦合/模块化程度。我认为一个很好的折衷办法是在它自己的库中创建一个EF模型,或者类似的库中创建一个简单的抽象层。在这种情况下,如果您选择将模型更改为使用公开服务而不是直接访问,那么重构现有代码应该不是什么大问题,新服务可以利用现有库。

通过直接使用实体框架,您的意思是WPF应用程序将连接到数据库,或者它仍然会使用服务,但会重复使用实体

如果这是第一种方法,我倾向于反对这一点,因为这意味着多个客户端连接到数据库,这a)是一个额外的安全问题,b)从许可的角度来看可能会使其更昂贵,c)意味着您无法获得连接池的好处。数据库是需要扩展的最昂贵的东西,所以我会尝试设计使用服务的解决方案,并减少对数据库的压力。但有时这是合适的。我注意到的一件事是,一开始直接连接的应用程序往往会在以后通过服务进行重构;很少有相反的情况发生。但雅格尼也可能是这样

如果是第二种方法,我想没关系。关注WCF的人通常会认为“面向服务”——也就是说,服务之间应该有一个严格的契约,不应该共享东西。但“多层”应用程序(仅设计为有一个客户端)也是一种完全有效的体系结构,不需要如此解耦。在这种情况下,重用服务边界两侧的实体就可以了。然而,我不确定具体使用EF有多容易,因为除了在实验中,我没有使用过它