带对象继承的Dapper FastCRUD

带对象继承的Dapper FastCRUD,dapper,dapper-fastcrud,Dapper,Dapper Fastcrud,我正在使用Dapper FastCRUD为我的项目插入/更新。我有一个从另一个实体继承的实体。它们都有单独的目标表,用TableAttribute注释。如果我有一个类型为继承类的对象,是否有一种方法可以使用Fast CRUD将数据保存到两个表中?不幸的是,我认为我们不能指望Dapper FastCRUD或任何常见的Dapper扩展以这种方式处理对象继承-我玩了一些,但运气不好 我能想到的最好办法是在我移交给Dapper执行请求的操作之前调用Convert.ChangeType 例如,我喜欢将数据

我正在使用Dapper FastCRUD为我的项目插入/更新。我有一个从另一个实体继承的实体。它们都有单独的目标表,用TableAttribute注释。如果我有一个类型为继承类的对象,是否有一种方法可以使用Fast CRUD将数据保存到两个表中?

不幸的是,我认为我们不能指望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);
}
然后我可以像这样坚持我的目标

Blog blog = new Blog();
dataMapper.Create(Blog)

希望这有帮助

不幸的是,我认为我们不能指望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);
}
然后我可以像这样坚持我的目标

Blog blog = new Blog();
dataMapper.Create(Blog)

希望这有帮助

谢谢@Ade。我能想到的最好办法是重写fastcrud或McConventions类上的GetEntityProperty,以筛选属于特定类型的属性。由于OrmConventions是一个应用程序级设置,我决定不使用它。谢谢@Ade。我能想到的最好办法是重写fastcrud或McConventions类上的GetEntityProperty,以筛选属于特定类型的属性。因为OrmConventions是一个应用程序级设置,所以我决定不使用它。