В настоящее время я работаю над интеграционным проектом для подключения двух разрозненных систем.
Мой план состоит в том, чтобы настроить HTTP-API, чтобы система A выдавала команды через HTTP-POST в систему B.
Эти команды будут использоваться для выдачи команд CRUD базе данных SQL-сервера для извлечения и обновления данных членских карточек (например, «создать членство», «членство в обновлении» и т. д.), а затем вернуть данные в систему A как XML. Я знаю, Многозвенное дизайн диктует, что я должен иметь класс MembershipCard с несколькими свойствами:Создание объектов против SELECT непосредственно из базы данных
public class MembershipCard
{
private string number;
private decimal points;
public string Number
{
get { return number; }
set { number = value; }
}
public decimal Points
{
get { return points; }
set { points = value; }
}
Наряду с несколькими методами, которые делают вызовы к DAL:
public string GetPoints(string cardnumber)
{
return MembershipCardDB.BalanceRequest(cardnumber);
}
Однако, у меня некоторые трудность оправдывает такой подход, как статический класс DAL, MembershipCardDB кажется выполнить всю работу, что мне нужно (если смотреть снизу):
public static string BalanceRequest(string cardNumber)
{
string response = string.Empty;
string sqlselect =
"SELECT Balance " +
"FROM tbl_MemberShipCard " +
"WHERE Card_No = @cardNumber " +
"FOR XML PATH ('Card'), ROOT('CardBalance')";
using (SqlConnection connect = new SqlConnection("Data Source=TEST\\TEST;Initial Catalog=TEST;User Id=sa;Password=TEST"))
{
connect.Open();
using (SqlCommand command = new SqlCommand(sqlselect))
{
command.Parameters.AddWithValue("@cardNumber", cardNumber);
response = (string)command.ExecuteScalar();
}
}
return response;
}
есть все, что я упускать из виду путем простого удаления класса MembershipCard и просто вытащить данные из базы данных и форматировать его как XML?
Если это единственный метод во всем приложении, то отказ в классе MembershipCard допустим в моей книге. Конструкции конструкции n-уровня предназначены для повторного использования и удобочитаемости. Но у меня есть проблема с установкой Console.ReadLine внутри открытого соединения SQL Server. Соединения SQL Server ограничены и дороги, поэтому их следует открывать и закрывать как можно быстрее. –
Зачем вы это делаете, кстати? Могу ли я предложить использовать Entity Framework для этого? Просто нет причин для внедрения «системы хранения CRUD» вручную, как это в наши дни и в возрасте. –
@GeneS Извините, у меня просто был Console.ReadLine() для тестирования. Я обновил вопрос, чтобы исправить это. – TelJanini