One of the challenges of using code generation is to avoid overwriting your custom changes when you re-generate the code later.
This is a trick I am using to avoid overwriting my stored procedures if I update them manually. The trick is to include a comment indicating that the SP has been code generated, and then to remove that comment if you update the SP. So lets say that you generate:
CREATE PROCEDURE OrderDetails_Get
@OrderId as int
AS
-- CODE GENERATED
SELECT * FROM
OrderDetails
WHERE
OrderId = @OrderId
and you made some customizations to the SP so it now looks like this:
CREATE PROCEDURE OrderDetails_Get
@OrderId as int
AS
SELECT * FROM
OrderDetails
INNER JOIN
Orders ON
Orders.OrderId = OrderDetails.OrderId
WHERE
OrderId = @OrderId
The following code will help you when generating your SPs to avoid overwriting this change:
IF EXISTS(
SELECT [definition] AS objectText
FROM sys.sql_modules
WHERE [object_id] = OBJECT_ID(N'OrderDetails_Get', 'P')
AND definition LIKE '%CODE GENERATED%')
BEGIN
-- overwrite is ok
END