1

我正在设计一个使用实体框架连接到MS SQL Server数据库的WPF应用程序。如何通过网络访问WPF桌面应用程序

应用程序从Excel文件读取数据并将记录保存到数据库。现在,下一个要求是,应用程序应该可以同时访问多个用户(公司网络),以便所有用户都可以在数据库中查看数据并在需要时查询/更新。

我在想的是,我只需要将数据库放在应该在公司内部网络上的中央机器上,我的应用程序应该连接到该数据库并允许用户执行操作。

我需要对当前连接字符串进行哪些更改?

<connectionStrings> 
    <add name="TPMSContext" connectionString="metadata=res://*/TPMSModel.csdl|res://*/TPMSModel.ssdl|res://*/TPMSModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=Test-DELL;initial catalog=TPMS;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

什么是我需要实现/记住我的应用程序,为多个用户同时工作的其他变化?

P.S:我的应用程序是“ANY CPU”,目标框架为4.5。现在它的基于桌面的,但在未来我们可能使它基于网络,但现在我们只是希望它是基于桌面的。请帮忙。

更新 This is the view of my solution explorer. TMPS is my Main application. TPMS.Data contains my business logic and methods that provides interaction with the database though Entity Framework. TPMS.Entities has the database tables as entity classes.

回答

1

这种方法被称为三层架构。您可以通过窗口上托管的WCF TCP/IP来实现它。 您将在其他服务器计算机上托管您的数据库交互业务逻辑,并且客户端将在另一台计算机上使用这些API。

您需要的流动:

  • 使用WCF创建一个服务(窗口)。
  • 托管它。
  • 生成代理(接口或合同)。
  • 将此代理分发给需要调用和使用此API的客户端应用程序。

你可以像下面创建应用程序的体系结构:

  • 部署在服务器上:

    一)数据库访问层(与数据库进行交互)。 b)业务逻辑层(它将数据库访问层的方法)。 c)服务层(在这里创建WCF服务和调用业务逻辑方法)。 d)将这些放入服务器机器。

  • 客户机 - a)通过使用创建代理类。svcutil工具 B)使用这个代理类的客户机使用服务(API)的

参考:

Host a WCF Service

+0

谢谢老兄了详细解释。我有个问题。 WCF在这里的作用是什么?它会做什么? 我最初的想法是,如果我可以将我的数据库放在服务器机器上并稍微更改连接字符串以便它引用来自该服务器的数据库,那么这是行不通的吗?这种情况下会出现什么问题?请详细说明 – WAQ

+0

基本上,WCF在服务器上提供API和主机服务。它将与您的数据库进行交互。其他机器可以从该服务器使用已部署的服务。在你的情况下,它会起作用。但是,这不是2层架构。 –

+1

我更新了我的问题,并添加了描述数据和实体dll的解决方案资源管理器的快照。 TPMS.Data基本上包含与数据库交互的edmx和类。 TPMS.Entites包含数据库表作为类/实体。 所以我将这个转换成三层架构,我会怎么做呢?如果我创建了一个WCF服务,在服务中添加实体框架模型(这基本上意味着我的TPMS.Data将会分解到WCF服务中,然后像上面提到的那样创建一个代理类并编写我的应用程序,这是否是正确的方法或者不是? – WAQ

相关问题