我是新来的,如果我不能很好地解释自己的话,对不起。 我有一个基本的asp.net RESTful API,它返回2个联系人,我从一个Android项目“使用它”,我的问题是我是否可以或如何将Web服务连接到另一台计算机上的Microsoft SQL Server 2014数据库。 我应该将ContactRepository中的连接作为简单连接还是需要进行其他更改? 我将代码留在下面:
ContactRepository:
namespace PruebaRestful.Services
{
public class ContactRepository
{
public Contact[] GetAllContacts()
{
return new Contact[]
{
new Contact
{
Id = 1,
Name = "Glenn Block"
},
new Contact
{
Id = 2,
Name = "Dan Roth"
}
};
}
}
}
ContactController:
namespace PruebaRestful.Controllers
{
public class ContactController : ApiController
{
private ContactRepository contactRepository;
public ContactController()
{
this.contactRepository = new ContactRepository();
}
public Contact[] Get()
{
return contactRepository.GetAllContacts();
}
}
}
谢谢大家,如果我需要写点什么,请在评论中告诉我。
答案 0 :(得分:0)
您可以使用Dependency Injection,即,它通常与让ContactController在构造函数中接受连接对象一样简单。通常,您将使用IConnection接口,而不是使用具体的连接类,以便将其模拟出来进行测试。
namespace PruebaRestful.Services
{
public class ContactRepository
{
private IConnection _connection;
public ContactRepository(IConnection connection)
{
_connection = connection;
}
public Contact[] GetAllContacts()
{
return new Contact[]
{
new Contact
{
Id = 1,
Name = "Glenn Block"
},
new Contact
{
Id = 2,
Name = "Dan Roth"
}
};
}
}
}
要了解更多有关如何在Asp.Net中进行操作的信息,请参见https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2
答案 1 :(得分:0)
简短的回答,您可以通过任何方式(ADO.net或任何其他ORM)来完成。
在您的方案中,您可以应用依赖关系反转原理。
更高级别的模块不应依赖于更低级别的抽象
在您的情况下,使用者不应知道从何处提供数据。您所需要做的就是更改GetAllContacts
以使用ORM从db读取数据。
public class DbConnection: IConnection
{
// Code for managing DB Connection and data querying
}
public class ContactRepository: IContactRepository
{
private IDbConnection _dbConnection;
public ContactRepository(IConnection dbConnection)
{
_dbConnection= dbConnection;
}
public Contact[] GetAllContacts()
{
// Add code to read from DB here
}
}
public class ContactController : ApiController
{
private IContactRepository _contactRepository;
public ContactController()
{
_contactRepository = <using any DI container resolve dependency with ContactRepository>;
}
public Contact[] Get()
{
return _contactRepository.GetAllContacts();
}
}