在asp中连接WebService Restful,net连接到数据库

nbysray5  于 2022-10-22  发布在  其他
关注(0)|答案(2)|浏览(127)

我是新来的,如果我不能很好地解释我自己,我很抱歉。
我有一个基本的asp。net RESTful API返回2个联系人,我从一个Android项目“使用它”,我的问题是我是否可以或如何将Web服务连接到另一台计算机中的Microsoft SQL Server 2014数据库。

我应该将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"
            }
            };
        }
    }
}

联系人控制器:

namespace PruebaRestful.Controllers
{
    public class ContactController : ApiController
    {
        private ContactRepository contactRepository;

        public ContactController()
        {
            this.contactRepository = new ContactRepository();
        }

        public Contact[] Get()
        {
            return contactRepository.GetAllContacts();        
        }
    }
}

谢谢大家,如果我需要写更多的东西,请在评论中告诉我。

ujv3wf0j

ujv3wf0j1#

您可以使用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中执行此操作。净见https://learn.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2

jchrr9hc

jchrr9hc2#

简而言之,你可以用任何方式(ADO.net或任何其他ORM)来做。
在您的场景中,您可以应用依赖项反转原则。
较高级别的模块不应依赖于较低级别的抽象
在您的情况下,消费者不应该知道数据是从哪里提供的。您所需要的只是更改GetAllContacts以使用ORM从数据库读取数据。

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();        
    }
}

相关问题