Из вашего кода я могу сделать вывод, что user_history и action связаны отношением внешнего ключа.
В этом случае, хотя Linq2SQL предоставляет вам действие в качестве поля в user_history, если вам нужно связать новый user_history с существующим действием, вы должны вернуть первичный ключ действия и установить соответствующее поле отношения вобъект user_history.
Редактировать : если первичный ключ вашего действия - это автоматически генерируемый столбец идентификаторов, вы можете проверить, является ли он новым, сравнив его с нулем.Для новых объектов их идентификаторы установлены в ноль.
Или вы можете просто изменить GetUserAction, чтобы вставить действие в базу данных, если оно новое.Таким образом, вы можете гарантировать, что он всегда возвращает действие, которое уже существует в базе данных.