1) Вот так. Таблицы-посредники, которые разбивают отношение M: M на два 1: M, должны иметь два столбца внешнего ключа в качестве своего PK. Создание таких таблиц с третьим столбцом PK
- ошибка новичка
2) Потому что именно так он ищет связанные данные, когда вы их запрашиваете (employee.Company.Name
может привести к загрузке данных компании для этого сотрудника, поэтому, возможно, что-то вроде SELECT Company.* FROM Company JOIN Employee ON Company.ID = Employe.CompanyId WHERE Employee.Id = @id
или, если объединения не используются запрашивая CompanyId у этого сотрудника, затем запрашивая данные о компании из ID компании), и как он точно знает, что он обновляется только в строке при сохранении изменений. «Нет ПК, нет игры!»
3) Боюсь, что это слишком широко для SO, но не стесняйтесь искать ресурсы, показывающие, как активировать ведение журнала генерируемых им запросов, тогда вы сможете увидеть, когда вы выполните context.Employee.Where(e => e.Name = "John")
, как это делается SELECT x FROM Employee WHERE name = 'John'
и т. Д.