WCF技巧:教你如何轻松访问数据库 (wcf 如何访问数据库)

WCF(Windows Communication Foundation)是一种用于创建分布式应用程序的框架,它能够帮助开发人员在不同的平台上进行通信。在开发中,我们常常需要访问数据库来存储和读取数据,而WCF也提供了一系列的服务和类,支持对数据库进行数据访问。本篇文章将教你如何使用WCF轻松访问数据库,让你的开发更加高效。

一、设置数据库连接

在WCF中,我们需要先设置数据库连接,让应用程序知道访问哪个数据库,并通过哪个账户进行访问。在配置文件Web.config或App.config中添加以下代码:

“`xml

“`

在这段代码中,我们定义了数据库连接的名称myConnectionString,以及连接字符串和提供程序名称。需要注意的是,Data Source表示数据库服务器的地址,Initial Catalog表示要访问的数据库名称,User Id表示登录账户的用户名,Password表示登录账户的密码,providerName表示提供程序的名称。

二、创建数据访问类

在WCF中,我们可以通过数据访问类访问数据库,以读取或修改数据库中的数据。WCF中提供了许多数据访问类,比如ADO.NET、Entity Framework等,本篇文章以ADO.NET为例来演示如何如何使用数据访问类访问数据库。

我们需要创建一个数据访问类,该类可以实现接口IUserRepository,并实现以下方法:

“`csharp

public class UserRepository : IUserRepository

{

private string connectionString = ConfigurationManager.ConnectionStrings[“myConnectionString”].ConnectionString;

public IEnumerable GetAllUsers()

{

using (SqlConnection connection = new SqlConnection(connectionString))

{

connection.Open();

SqlCommand command = new SqlCommand(“SELECT * FROM Users”, connection);

SqlDataReader reader = command.ExecuteReader();

List users = new List();

while (reader.Read())

{

User user = new User();

user.UserId = Convert.ToInt32(reader[“UserId”]);

user.UserName = reader[“UserName”].ToString();

user.PhoneNumber = reader[“PhoneNumber”].ToString();

users.Add(user);

}

reader.Close();

return users;

}

}

public User GetUserById(int userId)

{

using (SqlConnection connection = new SqlConnection(connectionString))

{

connection.Open();

SqlCommand command = new SqlCommand(“SELECT * FROM Users WHERE UserId=@UserId”, connection);

command.Parameters.AddWithValue(“@UserId”, userId);

SqlDataReader reader = command.ExecuteReader();

if (reader.Read())

{

User user = new User();

user.UserId = Convert.ToInt32(reader[“UserId”]);

user.UserName = reader[“UserName”].ToString();

user.PhoneNumber = reader[“PhoneNumber”].ToString();

reader.Close();

return user;

}

else

{

reader.Close();

return null;

}

}

}

}

“`

在上面的代码中,我们创建了一个UserRepository类,实现了接口IUserRepository,同时定义了数据库连接字符串,和两个方法GetAllUsers和GetUserById。其中,GetAllUsers方法从数据库中获取所有用户信息,并返回一个列表;GetUserById方法从数据库获取指定用户的信息,并返回该用户的User对象。

三、创建服务契约

在WCF中,我们需要创建服务契约,该契约定义了服务提供的方法、数据类型和返回值。在本例中,我们需要创建一个服务契约,它可以提供读取用户信息的方法。代码如下:

“`csharp

[ServiceContract]

public interface IUserService

{

[OperationContract]

IEnumerable GetAllUsers();

[OperationContract]

User GetUserById(int userId);

}

“`

在上面的代码中,我们创建了一个IUserService服务契约,定义了两个服务方法GetAllUsers和GetUserById,分别对应上面的UserRepository类中的两个方法。

四、实现服务

创建完服务契约后,我们需要创建服务并实现服务契约中的方法。代码如下:

“`csharp

public class UserService : IUserService

{

private IUserRepository userRepository = new UserRepository();

public IEnumerable GetAllUsers()

{

return userRepository.GetAllUsers();

}

public User GetUserById(int userId)

{

return userRepository.GetUserById(userId);

}

}

“`

在上面的代码中,我们创建了UserService类,并实现了IUserService中的两个方法GetAllUsers和GetUserById,这两个方法调用了UserRepository类中的方法完成数据读取的操作。

五、配置服务

完成服务的实现后,我们需要进行配置,将服务发布到IIS中,以便其他应用程序可以调用。打开Web.config文件,添加以下配置项:

“`xml

“`

在上面的配置中,我们将服务名称设置为UserService,并且使用basicHttpBinding协议来与客户端进行通信。同时,设置了服务的行为,其中serviceMetadata httpGetEnabled=”true”表示服务可以通过http方式获取元数据信息,serviceDebug includeExceptionDetlInFaults=”false”表示出现异常时,不将详细信息返回给客户端。

我们需要将服务发布到IIS中,以便其他应用程序可以调用。在Visual Studio中选择Build> Publish,设置发布文件夹和发布方式,点击Publish按钮完成发布。

六、调用服务

运行服务后,在浏览器中输入服务地址,可以看到服务的元数据信息。接下来,我们可以使用客户端应用程序来调用服务。在客户端中,需要添加服务引用,并创建客户端代理对象来调用服务。

“`csharp

static void Mn(string[] args)

{

UserServiceClient userServiceClient = new UserServiceClient();

var userList = userServiceClient.GetAllUsers();

foreach (var user in userList)

{

Console.WriteLine(user.UserId + “,” + user.UserName + “,” + user.PhoneNumber);

}

Console.ReadLine();

}

“`

在上面的代码中,我们首先创建了一个UserServiceClient客户端代理对象,通过该对象来访问服务。然后,我们调用了服务中的GetAllUsers方法,获取所有用户信息,并遍历输出。调用Console.ReadLine方法来保持控制台窗口打开。

七、


数据运维技术 » WCF技巧:教你如何轻松访问数据库 (wcf 如何访问数据库)