Я недавно боролся с тем же вопросом. Я не использовал единицу работы, а, скорее, единственный репозиторий - dbContext, как показано в примере Spap Plustalsight от John Papa для 1.x. Типовой проект ссылки в проекте данных компилируется в data.dll
Попробуйте это:
(я сделал это с угловой Cli сгенерированного проекта) Возьмите всю папку инструментов из примера temphire и поместите его в свой папке проекта. Убедитесь, что вы сделали установку npm для рулей, как это предлагается в документах metadatagenerator.exe.
скопировать package.json скрипты: строки для метаданных: лиц: и метаданные-объекты:
вы будете нуждаться в них, и будет регулировать как путь к вашей модели данных и имя самой DLL ,
"metadata": ".\\tools\\bin\\MetadataGenerator.exe..\\CFSWH.Web\\bin\\Debug\\CFSWH.Data.dll -o metadata.json",
"entities": "node ./tools/tsgen.js",
"metadata-entities": "npm run metadata && npm run entities"
Как вы, наверное, знаете, в dbContext есть несколько сложных строк. Мои первые неудачи были вызваны забывая, что и с использованием обычного декомпиляции DbContext из моей базы данных SQL, которые не имеют эти строки:
public CFS_WHContext() : base(nameOrConnectionString: "CFS_WH") { }
static CFS_WHContext()
{
var type1 = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
Database.SetInitializer<CFS_WHContext>(null);
}
В папке инструментов, вам нужно настроить в tsgen.js файл
tsGen.generate({
inputFileName: './metadata.json',
outputFolder: './src/app/core/entities',
camelCase: true,
kebabCaseFileNames: true,
baseClassName: 'EntityBase'
});
, чтобы отобразить правильную папку вывода для объектов. Вы должны создать эту папку заранее. Скопируйте файл entity-base.ts из папки объектов temphire (или попробуйте tsgen-core.js, чтобы не использовать его. Предложите не делать этого, поскольку он имеет расширенные свойства для entityState, которые, по моему мнению, могут пригодиться)
Сделать убедитесь, что у вас есть правильный путь к папке bin, содержащей вашу DLL в скрипте в package.json.
Предположим, вы установили все файлы ветер установить клиент и сервер показано на temphire, в том числе этих зависимостей в package.json
"breeze-bridge-angular2": "^0.3.6",
"breeze-client": "^1.6.0",
теперь переходим к командной строки и выполните метаданные объектов. (проще отлаживать, если вы npm запускаете их по одному за раз)
Устанавливая это быстро, так счастлив расширить его, если что-то неясно. Надежда Уорд или Джей будут звонить, если я сделал или объяснил что-то особенно утомленным или вводящим в заблуждение способом.
Хотелось бы увидеть больше поклонников бриз, которые поделились опытом ng2 здесь, пока Уорд и Джей не успеют документировать больше. Бриз стоит усилий.
Спасибо за отзыв Mr. Bell. Но я мог бы воспользоваться этой возможностью, поскольку вы что-то связали. – sskasim
Спасибо за ответ, мистер Белл. Но я мог бы воспользоваться этой возможностью, чтобы спросить вас о чем-то другом, но связанном с этим. Я разработал пару больших приложений LoB с использованием Breeze и Angular1x, не требуя каких-либо шаблонов UoW на стороне клиента или сервера. Бриз отслеживает все изменения с момента последнего сохранения, и я могу отклонить или зафиксировать изменения по своему усмотрению. Но для того, чтобы заставить Бриз работать с Angular2 и машинописными текстами, кажется, очень сложно. Я загрузил код TempHire, но смотрел по-гречески и по-латыни по сравнению с тем, что я сделал в Angular1x. На самом деле нужно что-то хорошо документированное для ng2 и бриз. – sskasim
@sskasim Шаблон UoW - это всего лишь один подход к управлению наборами данных/задачами/рабочими процессами на клиенте. Как минимум, вы должны абстрагировать свой уровень персистентности за какой-то услугой, которая предлагает четко определенный фасад для компонентов пользовательского интерфейса. Образец UoW зарекомендовал себя со временем как очень прочный шаблон проектирования для приложений среднего и крупного масштаба. Это больше, чем просто фасад над EntityManager. – superswiss