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)

Надеюсь это поможет!

Другие вопросы по тегам