2015-02-19 3 views
0

Итак, у меня есть класс, который я создал в качестве примера того, что я видел, и даже начал использовать этот шаблон сам по себе, поскольку он, как правило, весьма полезен для меня. Проблема в том, что я называю это POCO, но, тем не менее, я считаю, что POCO действительно не должен иметь фактического доступа к данным. Я считаю, что это больше для DTO. Итак, вопрос здесь в этом DTO, POCO, сочетание двух или ни одного?Является ли это DTO или POCO или комбинацией двух C#

namespace MAINAPP.DAL 
{ 

    public class SomeModel 
    { 
     public int SomeModelID { get; set; } 
     public String Name { get; set; } 

     public static bool DeleteSomeModel(int SomeModelID) 
     { 
      bool returnstatus = true; 
      int statusint = 0; 
      try 
      { 
       using (SqlConnection sc = new SqlConnection(ConfigurationManager.ConnectionStrings["SomeDBString"].ConnectionString)) 
       { 
        sc.Open(); 
        StringBuilder query = new StringBuilder(); 
        query.Append("DELETE FROM SomeModels WHERE SomeModelID = @SomeModelID"); 

        using (SqlCommand comm = new SqlCommand(query.ToString(), sc)) 
        { 
         comm.Parameters.Add(new SqlParameter("@SomeModelID", SomeModelID)); 
         statusint = comm.ExecuteNonQuery(); 


         comm.Dispose(); 
        } 
        sc.Close(); 
        sc.Dispose(); 
       } 

      } 
      catch (SqlException se) 
      { 
       var exceptionresult = se.Message; 

      } 
      if (statusint > 0) 
      { 
       returnstatus = true; 
      } 
      else 
      { 

       returnstatus = false; 
      } 
      return returnstatus; 
     } 

    } 
} 
+0

Выглядит как некоторые изменения активного шаблона записи ... http://www.martinfowler.com/eaaCatalog/activeRecord.html – walther

ответ

4

Это не POCO и не DTO.

POCO - это простой объект CLR, что означает, что он не имеет зависимостей и не имеет базовых классов. Объект, который вы представили, зависит от System.Data.

DTO традиционно используется как контракт с данными. DTO означает, что он действительно не должен иметь поведения, потому что это поведение не является сериализуемым. Если кто-то должен был уничтожить объект из определения WSDL и не имел представления вашего класса, они не смогли воспроизвести метод DeleteSomeModel.

Если вы хотите классы POCO, я бы предложил использовать шаблон репозитория для доступа к данным или использовать что-то вроде Code First в Entity Framework.

Вот пример использования хранилища шаблона

public class SomeModel 
{ 
    public int SomeModelID { get; set; } 
    public String Name { get; set; } 
} 

public class SomeModelRepository 
{ 
    public void Delete(int id) 
    { 
     // delete logic here 
    } 
} 
+0

LOL Так что да мне нравится Я сказал, что вижу этот стиль совсем немного здесь и там. честно говоря, это работает неплохо, я просто не знал, что именно назвать. Вы видите что-то не так с этим стилем или что? – scripter78

+1

Нет ничего плохого в шаблоне репозитория, он работает очень хорошо. Единственное, о чем я предупреждаю, - это не утечка бизнес-логики в ваши репозитории. –

Смежные вопросы