带有对象继承的 Dapper FastCRUD
Dapper FastCRUD with object inheritance
我正在为我的项目 insert/update 使用 Dapper FastCRUD。我有一个从另一个实体继承的实体。它们都有单独的目标表,用 TableAttribute 注释。有没有办法使用快速 CRUD 将数据保存到两个表中,如果我有一个类型的对象,它是继承的 class?
不幸的是,我不认为我们可以期望 Dapper FastCRUD 或任何常见的 dapper 扩展以这种方式处理对象继承 - 我玩过一些但没有运气。
我能想到的最好办法是在我移交给 Dapper 执行请求的操作之前调用 Convert.ChangeType。
例如,我喜欢将数据库交互与业务逻辑分开。我的想法是,我可以轻松地将 ORM 换成另一个,而无需靠近我的业务逻辑。
public void Create<T>(T bo) where T : BusinessObject
{
var castedBo = (T)Convert.ChangeType(bo, typeof(T));
Connection.Insert(castedBo);
}
我试图坚持的我的对象扩展了 BusinessObject
Table("Blog")]
public class Blog : BusinessObject {
...
}
然后我可以像这样持久化我的对象
Blog blog = new Blog();
dataMapper.Create(Blog)
希望对您有所帮助!
我正在为我的项目 insert/update 使用 Dapper FastCRUD。我有一个从另一个实体继承的实体。它们都有单独的目标表,用 TableAttribute 注释。有没有办法使用快速 CRUD 将数据保存到两个表中,如果我有一个类型的对象,它是继承的 class?
不幸的是,我不认为我们可以期望 Dapper FastCRUD 或任何常见的 dapper 扩展以这种方式处理对象继承 - 我玩过一些但没有运气。
我能想到的最好办法是在我移交给 Dapper 执行请求的操作之前调用 Convert.ChangeType。
例如,我喜欢将数据库交互与业务逻辑分开。我的想法是,我可以轻松地将 ORM 换成另一个,而无需靠近我的业务逻辑。
public void Create<T>(T bo) where T : BusinessObject
{
var castedBo = (T)Convert.ChangeType(bo, typeof(T));
Connection.Insert(castedBo);
}
我试图坚持的我的对象扩展了 BusinessObject
Table("Blog")]
public class Blog : BusinessObject {
...
}
然后我可以像这样持久化我的对象
Blog blog = new Blog();
dataMapper.Create(Blog)
希望对您有所帮助!