Однако существует ли другой способ «связывать» эти таблицы вместе без наличия объекта Merchant?
blockquote>No. Отношение «многие ко многим» с EF - это независимые ассоциации, т. Е. В вашей модели нет свойства внешнего ключа. Вам нужно управлять отношениями, используя две коллекции. Это единственный способ.
Но, см. Следующий пункт ...
... если есть быстрый способ сделать это соотношение без необходимости звонить база данных, чтобы получить объект Merchant, поскольку у нас уже есть действительный MerchantGuid.
blockquote>Чтобы создать взаимосвязь, вам не нужно загружать существующий объект
Merchant
из базы данных. Вы можете создать объект «заглушка» с свойством ключа, установленным в действительномMerchantGuid
, а затем привязать его к контексту. Для EF это сущность в состоянииUnchanged
, которая ведет себя так, как если бы она была загружена из базы данных:var newNumber = new Number { NumberGuid = Guid.NewGuid(), PhoneNumber = "55555555555" }; var merchant = new Merchant { MerchantGuid = alreadyKnownMerchantGuid, Numbers = new HashSet<Number>() }; context.Merchants.Attach(merchant); merchant.Numbers.Add(newNumber); context.SaveChanges();
Здесь нет запроса к базе данных.
SaveChanges
создаст новую записьNumber
и новую запись отношения в таблице соединений.
У меня была такая же проблема с Vuely XD. На данный момент, что я сделал это:
mix.autoload({
'jquery': [', 'window.jQuery', 'jQuery'],
})
mix.webpackConfig({
resolve: {
alias: {
'Api': path.resolve(__dirname, 'resources/js/api/'),
'Components': path.resolve(__dirname, 'resources/js/components/'),
'Constants': path.resolve(__dirname, 'resources/js/constants/'),
'Container': path.resolve(__dirname, 'resources/js/container/'),
'Views': path.resolve(__dirname, 'resources/js/views/'),
'Helpers': path.resolve(__dirname, 'resources/js/helpers/'),
'Themes': path.resolve(__dirname, 'resources/js/themes/')
}
},
output: {
chunkFilename: mix.inProduction() ? "js/chunks/[name].[chunkhash].js" : "js/chunks/[name].js",
}
});
mix.options({
extractVueStyles: true
});
mix.js('resources/js/main.js', 'public/js');
mix.sass('resources/js/assets/scss/_style.scss', 'public/css/style.css');