Только что созданный вспомогательный класс для извлечения этого шаблона в другое место:
public class RxRethrow {
public static <T, R> Func1<T, R> rethrow(Func1R<T, R> catchedFunc) {
return t -> {
try {
return catchedFunc.call(t);
} catch (Exception e) {
throw Exceptions.propagate(e);
}
};
}
public interface Func1R<T, R> extends Function {
R call(T t) throws Exception;
}
}
Вы можете назвать его так:
.map(RxRethrow.rethrow(products -> mapper.writer(schema).writeValueAsString(products)))
Хорошо, здесь вам нужно выполнить несколько шагов:
sp_GetDepartmanData
в вашу модель Entity Framework
(в стороне - это настоятельно , рекомендуется НЕ вызывать ваши хранимые процедуры sp_ (something)
) - использование префикса sp_
является зарезервировано только для системных хранимых процедур Microsoft) DepartmentDataEntityType
или чем-то подобным; добавьте все поля, возвращаемые из хранимой процедуры, к этому типу сущности DepartmentDataEntityType
сверху) Теперь у вас должна быть функция import что-то вроде:
public global::System.Data.Objects.ObjectResult<DepartmentDataEntityType> GetPersonelInformationWithDepartmanID(global::System.String departmentName)
{
global::System.Data.Objects.ObjectParameter departmentNameParameter;
departmentNameParameter = new global::System.Data.Objects.ObjectParameter("departmentNameParameter", departmentName);
return base.ExecuteFunction<DepartmentDataEntityType>("sp_GetDepartmanData", departmentNameParameter);
}
Эта функция в контексте вашего объекта теперь может быть вызвана для получения данных через хранимую процедуру из вашей базы данных.
Marc
Edit:
] Если вы получаете ошибку сопоставления («Ошибка 3027: сопоставление не указано для следующего набора EntitySet / AssociationSet») после этого, это потому, что созданный вами объект не сопоставлен ни с чем и используется только тогда, когда функция import заполняет коллекция этих сущностей. Вам либо нужно каким-то образом сопоставить этот объект с хранилищем данных, либо вам нужно изменить его на сложный тип.
Чтобы создать сложный шрифт, просто откройте конструктор EF и щелкните правой кнопкой мыши пустую область. Перейдите в Добавить> Сложный тип. Вы должны увидеть новый сложный тип в обозревателе модели. Щелкните его правой кнопкой мыши и добавьте скалярные свойства, аналогичные тому, как вы добавляли свойства к своей сущности. Затем удалите свою сущность и переименуйте сложный тип так же, как и сущность.
Это все, что вам нужно сделать:)
Как вы создаете эту «концептуальную сущность»? Если я создаю объект, который не сопоставлен с объектом, я получаю следующую ошибку: «Тип объекта 'foobar' не сопоставлен с базой данных.