Dapper FastCRUD с наследованием объектов
Я использую Dapper FastCRUD для вставки / обновления для моего проекта. У меня есть объект, который наследуется от другого объекта. Обе они имеют отдельные таблицы назначения, помеченные как TableAttribute. Есть ли способ сохранить данные в обе таблицы с помощью Fast CRUD, если у меня есть объект типа, который является унаследованным классом?
1 ответ
К сожалению, я не думаю, что мы можем ожидать, что Dapper FastCRUD или какое-либо из распространенных расширений dapper будут обрабатывать наследование объектов таким образом - я играл с несколькими, и не повезло.
Лучшее, что я мог придумать, - это вызвать Convert.ChangeType, прежде чем я передам Dapper для выполнения запрошенной операции.
Например, мне нравится отделять взаимодействие с базой данных от бизнес-логики. Идея в том, что я могу легко заменить 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)
Надеюсь это поможет!