Строка соединения с базой данных - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть клиент-серверное приложение. У меня есть база данных и некоторые логи c, написанные на WCF. Например, у меня есть таблица ресторана (я реализовал get, post, put, delete). Однако в моей таблице есть поле Id_Res, я хотел реализовать его следующим образом. В браузере я ввожу название ресторана, оно сохраняется в базе данных, затем имена ресторанов импортируются из базы данных в массив или список массивов, на основании этого я создаю Id_Cus и снова вводю его в базу данных.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using WcfRestFullService.Model;

namespace WcfRestFullService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IRestaraunt" in both code and config file together.
    [ServiceContract]
    public interface IRestaraunt
    {
        [OperationContract]
        [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json,
            ResponseFormat = WebMessageFormat.Json, UriTemplate = "/GetAllRestaraunts/")]//ok
        List<restaraunt> GetAllRestaraunts();

        [OperationContract]
        [WebGet(RequestFormat = WebMessageFormat.Json,
         ResponseFormat = WebMessageFormat.Json,
         UriTemplate = "/RestarautDetails/{Id_Res}")]
        restaraunt RestarauntDetails(String Id_Res);

        [OperationContract]
        [WebInvoke(Method = "DELETE", ResponseFormat = WebMessageFormat.Json,
         RequestFormat = WebMessageFormat.Json,
         BodyStyle = WebMessageBodyStyle.Bare)]
        void DeleteRestaraunt(String Id_Res);

        [OperationContract]
        [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json,
         RequestFormat = WebMessageFormat.Json,
         //BodyStyle = WebMessageBodyStyle.Wrapped,
         UriTemplate = "/InsertRestaraunt/")]//problem
        void InsertRestaraunt(restaraunt restarauntDataContract);

        [OperationContract]
        [WebInvoke(Method = "PUT", ResponseFormat = WebMessageFormat.Json,
         RequestFormat = WebMessageFormat.Json,
         //BodyStyle = WebMessageBodyStyle.Bare,
         UriTemplate = "/UpdateRestaraunt/")]//problem
        void UpdateRestaraunt(restaraunt restarauntDataContract);
    }
}

SV C file

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using WcfRestFullService.Model;

namespace WcfRestFullService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Restaraunt" in code, svc and config file together.
    // NOTE: In order to launch WCF Test Client for testing this service, please select Restaraunt.svc or Restaraunt.svc.cs at the Solution Explorer and start debugging.
    public class Restaraunt : IRestaraunt
    {
        MySQLEntities dc;
        public void DeleteRestaraunt(string Id_Res)
        {
            int k = Convert.ToInt32(Id_Res);
            restaraunt res = (from n in dc.restaraunts
                         where n.Id_Res == k
                         select n).Include(c => c.orders).Include(c => c.dishes).ToList().First();

            dc.Configuration.ValidateOnSaveEnabled = false;
            dc.restaraunts.Remove(res);
            dc.SaveChanges();
        }


        public List<restaraunt> GetAllRestaraunts()
        {
            var query = (from a in dc.restaraunts
                         select a).Distinct();

            List<restaraunt> RestarauntsList = new List<restaraunt>();

            query.ToList().ForEach(x =>
            {
                RestarauntsList.Add(new restaraunt
                {
                    Id_Res = x.Id_Res,
                    Name_Res=x.Name_Res,
                    Phone_Res=x.Phone_Res,
                    Dishes_Res=x.Dishes_Res,
                    Adress_Res=x.Adress_Res,
                    Email_Res=x.Email_Res,
                    WebSite_Res=x.WebSite_Res,
                    Rating_Res=x.Rating_Res
                });
            });
            return RestarauntsList;
        }

        public void InsertRestaraunt(restaraunt restarauntDataContract)
        {
            restaraunt res = new restaraunt(); 
            order ord = new order();
            customer cust = new customer();
           // ArrayList a1 = new ArrayList { "fish", "meet", "drinks" };
            //a1.Add(fish);
            ord.Name_Dis = "Any Food";
            {
                res.Id_Res = restarauntDataContract.Id_Res;
                res.Name_Res = restarauntDataContract.Name_Res;
                res.Phone_Res = restarauntDataContract.Phone_Res;
                res.Dishes_Res = restarauntDataContract.Dishes_Res;
                res.Adress_Res = restarauntDataContract.Adress_Res;
                res.Email_Res = restarauntDataContract.Email_Res;
                res.WebSite_Res = restarauntDataContract.WebSite_Res;
                res.Rating_Res = restarauntDataContract.Rating_Res;
            }
            dc.restaraunts.Add(res);
            dc.SaveChanges();

            int k = Convert.ToInt32(res.Id_Res);
            restaraunt restFromDb = (from n in dc.restaraunts
                                   where n.Id_Res == k
                                   select n).Include(c => c.orders).Include(c => c.dishes).First();
        }

        public restaraunt RestarauntDetails(string Id_Res)
        {
            throw new NotImplementedException();
        }

        public void UpdateRestaraunt(restaraunt restarauntDataContract)
        {
            int k = Convert.ToInt32(restarauntDataContract.Id_Res);
            restaraunt res = dc.restaraunts.Where(n => n.Id_Res == k).FirstOrDefault();

            res.Id_Res = restarauntDataContract.Id_Res;
            res.Name_Res = restarauntDataContract.Name_Res;
            res.Phone_Res = restarauntDataContract.Phone_Res;
            res.Dishes_Res = restarauntDataContract.Dishes_Res;
            res.Adress_Res = restarauntDataContract.Adress_Res;
            res.Email_Res = restarauntDataContract.Email_Res;
            res.WebSite_Res = restarauntDataContract.WebSite_Res;
            res.Rating_Res = restarauntDataContract.Rating_Res;

            dc.SaveChanges();
        }
    }
}

Насколько я понимаю, мне нужно настроить строку подключения в файле SV C. Но так как он наследуется, я не могу зарегистрировать соединение с базой данных. Я пытался реализовать строку подключения через отдельный класс, но я все еще не понимаю, как правильно активировать ее в интерфейсе.

class DBUtils
    {
        public static MySqlConnection GetDBConnection()
        {
            string host = "localhost";//192.168.205.130
            int port = 3306;
            string database = "simplehr";
            string username = "root";//
            string password = "l10ksfnq5h2c";//

            return DBMySQLUtils.GetDBConnection(host, port, database, username, password);
        }
    }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

namespace Tutorial.SqlConn
{
    class DBMySQLUtils
    {
        public static MySqlConnection
               GetDBConnection(string host, int port, string database, string username, string password)
        {
            // Connection String.
            String connString = "Server=" + host + ";Database=" + database
                + ";port=" + port + ";User Id=" + username + ";password=" + password;

            MySqlConnection conn = new MySqlConnection(connString);

            return conn;
        }
    }
}

Если я все правильно понимаю, то мне нужно только строка подключения для функции InsertRestaraunt (метод POST)

Буду признателен, если вы подскажете, как реализовать строку подключения в WCF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...