У меня есть клиент-серверное приложение. У меня есть база данных и некоторые логи 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