diff --git a/src/EntityFrameworkCore.Generator.Core/OptionMapper.cs b/src/EntityFrameworkCore.Generator.Core/OptionMapper.cs
index ad837307..5b938bda 100644
--- a/src/EntityFrameworkCore.Generator.Core/OptionMapper.cs
+++ b/src/EntityFrameworkCore.Generator.Core/OptionMapper.cs
@@ -154,6 +154,7 @@ private static void MapEntity(EntityClassOptions option, EntityClass entity)
         option.EntityNaming = entity.EntityNaming;
         option.RelationshipNaming = entity.RelationshipNaming;
         option.PrefixWithSchemaName = entity.PrefixWithSchemaName;
+        option.GeneratePkValue = entity.GeneratePkValue;
 
         MapSelection(option.Renaming, entity.Renaming);
     }
diff --git a/src/EntityFrameworkCore.Generator.Core/Options/EntityClassOptions.cs b/src/EntityFrameworkCore.Generator.Core/Options/EntityClassOptions.cs
index 3878ce7a..1071a54f 100644
--- a/src/EntityFrameworkCore.Generator.Core/Options/EntityClassOptions.cs
+++ b/src/EntityFrameworkCore.Generator.Core/Options/EntityClassOptions.cs
@@ -20,6 +20,7 @@ public EntityClassOptions(VariableDictionary variables, string prefix)
         RelationshipNaming = RelationshipNaming.Plural;
         EntityNaming = EntityNaming.Singular;
         PrefixWithSchemaName = false;
+        GeneratePkValue = false;
 
         Renaming = new SelectionOptions(variables, AppendPrefix(prefix, "Naming"));
     }
@@ -79,4 +80,10 @@ public string BaseClass
     /// The renaming expressions.
     /// </value>
     public SelectionOptions Renaming { get; }
+
+    /// <summary>
+    /// If true, the primary key property will have a value generated in the constructor
+    /// </summary>
+    [DefaultValue(false)]
+    public bool GeneratePkValue { get; set; }
 }
diff --git a/src/EntityFrameworkCore.Generator.Core/Serialization/EntityClass.cs b/src/EntityFrameworkCore.Generator.Core/Serialization/EntityClass.cs
index 44df5285..71da3b6e 100644
--- a/src/EntityFrameworkCore.Generator.Core/Serialization/EntityClass.cs
+++ b/src/EntityFrameworkCore.Generator.Core/Serialization/EntityClass.cs
@@ -21,6 +21,7 @@ public EntityClass()
         RelationshipNaming = RelationshipNaming.Plural;
         EntityNaming = EntityNaming.Singular;
         PrefixWithSchemaName = false;
+        GeneratePkValue = false;
     }
 
     /// <summary>
@@ -70,4 +71,10 @@ public EntityClass()
     /// The renaming expressions.
     /// </value>
     public SelectionModel Renaming { get; set; }
+
+    /// <summary>
+    /// If true, the primary key property will have a value generated in the constructor
+    /// </summary>
+    [DefaultValue(false)]
+    public bool GeneratePkValue { get; set; }
 }
diff --git a/src/EntityFrameworkCore.Generator.Core/Templates/EntityClassTemplate.cs b/src/EntityFrameworkCore.Generator.Core/Templates/EntityClassTemplate.cs
index 8bea59bf..42667e61 100644
--- a/src/EntityFrameworkCore.Generator.Core/Templates/EntityClassTemplate.cs
+++ b/src/EntityFrameworkCore.Generator.Core/Templates/EntityClassTemplate.cs
@@ -103,6 +103,20 @@ private void GenerateConstructor()
         using (CodeBuilder.Indent())
         {
             CodeBuilder.AppendLine("#region Generated Constructor");
+
+            if (Options.Data.Entity.GeneratePkValue)
+            {
+                var primaryKeyProperty = _entity.Properties.FirstOrDefault(p => p.IsPrimaryKey == true);
+
+                if (primaryKeyProperty != null && primaryKeyProperty.DataType == System.Data.DbType.Guid)
+                {
+                    var primaryKeyPropertyName = primaryKeyProperty.PropertyName.ToSafeName();
+
+                    CodeBuilder.AppendLine($"{primaryKeyPropertyName} = Guid.NewGuid();");
+                    CodeBuilder.AppendLine();
+                }
+            }
+
             foreach (var relationship in relationships)
             {
                 var propertyName = relationship.PropertyName.ToSafeName();
diff --git a/src/EntityFrameworkCore.Generator.Core/Templates/MappingClassTemplate.cs b/src/EntityFrameworkCore.Generator.Core/Templates/MappingClassTemplate.cs
index 2ae568fe..711945e0 100644
--- a/src/EntityFrameworkCore.Generator.Core/Templates/MappingClassTemplate.cs
+++ b/src/EntityFrameworkCore.Generator.Core/Templates/MappingClassTemplate.cs
@@ -306,20 +306,29 @@ private void GeneratePropertyMapping(Property property)
             CodeBuilder.Append($".HasDefaultValueSql({property.Default.ToLiteral()})");
         }
 
-        switch (property.ValueGenerated)
+        //If Primary key value should be generated, specify ValueGeneratedNever() so the database won't generate values for the property
+        if (property.IsPrimaryKey == true && Options.Data.Entity.GeneratePkValue)
         {
-            case ValueGenerated.OnAdd:
-                CodeBuilder.AppendLine();
-                CodeBuilder.Append(".ValueGeneratedOnAdd()");
-                break;
-            case ValueGenerated.OnAddOrUpdate:
-                CodeBuilder.AppendLine();
-                CodeBuilder.Append(".ValueGeneratedOnAddOrUpdate()");
-                break;
-            case ValueGenerated.OnUpdate:
-                CodeBuilder.AppendLine();
-                CodeBuilder.Append(".ValueGeneratedOnUpdate()");
-                break;
+            CodeBuilder.AppendLine();
+            CodeBuilder.Append(".ValueGeneratedNever()");
+        }
+        else
+        {
+            switch (property.ValueGenerated)
+            {
+                case ValueGenerated.OnAdd:
+                    CodeBuilder.AppendLine();
+                    CodeBuilder.Append(".ValueGeneratedOnAdd()");
+                    break;
+                case ValueGenerated.OnAddOrUpdate:
+                    CodeBuilder.AppendLine();
+                    CodeBuilder.Append(".ValueGeneratedOnAddOrUpdate()");
+                    break;
+                case ValueGenerated.OnUpdate:
+                    CodeBuilder.AppendLine();
+                    CodeBuilder.Append(".ValueGeneratedOnUpdate()");
+                    break;
+            }
         }
         CodeBuilder.DecrementIndent();
 
diff --git a/test/EntityFrameworkCore.Generator.Core.Tests/Options/full.yaml b/test/EntityFrameworkCore.Generator.Core.Tests/Options/full.yaml
index 5d253569..dc4cad0c 100644
--- a/test/EntityFrameworkCore.Generator.Core.Tests/Options/full.yaml
+++ b/test/EntityFrameworkCore.Generator.Core.Tests/Options/full.yaml
@@ -34,6 +34,7 @@ data:
     relationshipNaming: Plural
     document: false
     prefixWithSchemaName: false
+    generatePkValue: false
     renaming:
       entities:
         - ^(sp|tbl|udf|vw)_