C# C语言中无实体框架的存储库模式
我有一个新项目需要连接到Oracle 9i。我想使用我是新手的存储库模式来组织我的代码。我将使用一些存储过程进行一些查询 我想以这样一种方式来编写代码,即不应该有重复,也要遵循最佳实践 请检查我下面的代码,让我知道我是否做得对。我有一种感觉,我不是 我试着阅读其他关于同一主题的帖子,但没有成功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();
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();
}
}