Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中无实体框架的存储库模式_C#_Database_Class_Model View Controller_Repository - Fatal编程技术网

C# C语言中无实体框架的存储库模式

C# C语言中无实体框架的存储库模式,c#,database,class,model-view-controller,repository,C#,Database,Class,Model View Controller,Repository,我有一个新项目需要连接到Oracle 9i。我想使用我是新手的存储库模式来组织我的代码。我将使用一些存储过程进行一些查询 我想以这样一种方式来编写代码,即不应该有重复,也要遵循最佳实践 请检查我下面的代码,让我知道我是否做得对。我有一种感觉,我不是 我试着阅读其他关于同一主题的帖子,但没有成功 public interface IDeliveryRepository : IDisposable { IEnumerable<Delivery> GetDeliveries();

我有一个新项目需要连接到Oracle 9i。我想使用我是新手的存储库模式来组织我的代码。我将使用一些存储过程进行一些查询

我想以这样一种方式来编写代码,即不应该有重复,也要遵循最佳实践

请检查我下面的代码,让我知道我是否做得对。我有一种感觉,我不是

我试着阅读其他关于同一主题的帖子,但没有成功

public interface IDeliveryRepository : IDisposable
{
    IEnumerable<Delivery> GetDeliveries();
    Task GetDelivery(int id);
    void Insert(Delivery delivery);
    void Delete(Delivery delivery);
    void Update(Delivery delivery);
}
。 . . .
.

您不需要使存储库IDisposable,要使用该任务,您应该使用实现整个类。我已经在下面更新了您的代码,这将使您接近编译基线,然后可以进行扩展

 // Removed the IDisposable interface
 public interface IDeliveryRepository
 {
     IEnumerable<Delivery> GetDeliveries();

     // Changed the below from a Task to a Delivery as the return type. To use Task, 
     // your entire implementation should be asynchronous.
     Delivery GetDelivery(int id);
     void Insert(Delivery delivery);
     void Delete(Delivery delivery);
     void Update(Delivery delivery);
 }

 public class DeliveryRepository: IDeliveryRepository
 {
     public Delivery GetDelivery(int id)
     {
         Delivery delivery = null;
         var sql = "SELECT d.id , o.owner_id, o.name FROM delivery d JOIN owner o on o.id = d.owner_id where id = :t";
         using (var con = new OracleConnection(AppConfig.CALL_CENTER_CONNECTION_STRING))
         {
             con.Open();
             using (var cmd = new OracleCommand(sql, con))
             {
                 cmd.BindByName = true;
                 cmd.Parameters.Add("t", id);
                 using (var oraReader = cmd.ExecuteReader())
                 {
                     while (oraReader.Read())
                     {
                         delivery = new Delivery
                         {
                             Id = oraReader.GetString(oraReader.GetOrdinal("id")),
                             Owner = new Owner
                                {
                                 Id = oraReader.GetString(oraReader.GetOrdinal("owner_id")),
                                 Name = oraReader.GetString(oraReader.GetOrdinal("name"))
                             }
                         };
                     }
                 }
             }
         }
         return delivery;
     }

   public void Insert(Delivery delivery)
   {
       /// Add your code here 
       throw new NotImplementedException();
   }


   public void Delete(Delivery delivery);
   {
       /// Add your code here 
       throw new NotImplementedException();
   }

   public void Update(Delivery delivery);
   {
       /// Add your code here 
       throw new NotImplementedException();
    }

    public IEnumerable<Delivery> GetDeliveries();
    {
       /// Add your code here 
       throw new NotImplementedException();
    }
}

只要用整洁的方式,就可以省下很多钱time@MichaelRandall谢谢你1000次,这正是我想要的。我真的很感激,谢谢你。我真的很感激。我要找的工具很整洁。
 // Removed the IDisposable interface
 public interface IDeliveryRepository
 {
     IEnumerable<Delivery> GetDeliveries();

     // Changed the below from a Task to a Delivery as the return type. To use Task, 
     // your entire implementation should be asynchronous.
     Delivery GetDelivery(int id);
     void Insert(Delivery delivery);
     void Delete(Delivery delivery);
     void Update(Delivery delivery);
 }

 public class DeliveryRepository: IDeliveryRepository
 {
     public Delivery GetDelivery(int id)
     {
         Delivery delivery = null;
         var sql = "SELECT d.id , o.owner_id, o.name FROM delivery d JOIN owner o on o.id = d.owner_id where id = :t";
         using (var con = new OracleConnection(AppConfig.CALL_CENTER_CONNECTION_STRING))
         {
             con.Open();
             using (var cmd = new OracleCommand(sql, con))
             {
                 cmd.BindByName = true;
                 cmd.Parameters.Add("t", id);
                 using (var oraReader = cmd.ExecuteReader())
                 {
                     while (oraReader.Read())
                     {
                         delivery = new Delivery
                         {
                             Id = oraReader.GetString(oraReader.GetOrdinal("id")),
                             Owner = new Owner
                                {
                                 Id = oraReader.GetString(oraReader.GetOrdinal("owner_id")),
                                 Name = oraReader.GetString(oraReader.GetOrdinal("name"))
                             }
                         };
                     }
                 }
             }
         }
         return delivery;
     }

   public void Insert(Delivery delivery)
   {
       /// Add your code here 
       throw new NotImplementedException();
   }


   public void Delete(Delivery delivery);
   {
       /// Add your code here 
       throw new NotImplementedException();
   }

   public void Update(Delivery delivery);
   {
       /// Add your code here 
       throw new NotImplementedException();
    }

    public IEnumerable<Delivery> GetDeliveries();
    {
       /// Add your code here 
       throw new NotImplementedException();
    }
}