问题描述
我正在将策略设计模式应用于数据访问机制。 我有一个与技术无关的界面;
public interface IMyEntityDal
{
MyEntity Get();
bool Insert(MyEntity myEntity);
void Delete();
}
我有2个具体的数据访问类,它们继承自IMyEntityDal接口。
public class sqlMyEntityDal : IMyEntityDal
{
MyEntity Get()
{
//some ef or ado.net code...
}
bool Insert(MyEntity myEntity)
{
//this method is not usable for this concrete class.
}
void Delete(MyEntity myEntity)
{
//some ef or ado.net code...
}
}
public class OracleMyEntityDal : IMyEntityDal
{
MyEntity Get()
{
//this method is not usable for this concrete class.
}
bool Insert(MyEntity myEntity)
{
//some oracle specific code...
}
void Delete(MyEntity myEntity)
{
//some oracle specific code...
}
}
使用IMyEntityDal的客户端不了解IMyEntityDal实现(sql或Oracle)。它使用构造函数注入具体的类。
public class Client
{
private IMyEntityDal _myEntityDal;
public Client(IMyEntityDal myEntityDal)
{
_myEntityDal = myEntityDal;
}
public void Do()
{
var myEntity = _myEntityDal.Get();
_myEntityDal.Insert(myEntity);
}
public void DeleteMyEntity(MyEntity myEntity)
{
_myEntity.Delete(myEntity);
}
我想从sql获取MyEntity对象并插入到ORACLE数据库中。
我不想为Insert(MyEntity myEntity)
具体类实现sqlMyEntityDal
方法。而且我不想为Get()
具体类实现OracleMyEntityDal
方法。我也想为这两个类实现Delete(MyEntity myEntity)
方法。在这种情况下,我可以使用构造函数注入为Delete()
方法选择具体的类。但是Client
正在获取和插入同一数据库。
我该如何设计这种机制?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)