First, EF does not generate stored procedures. Everything is done through normal SQL statements.
Next, your idea of "count(*) + 1" to generate a record ID value is ridiculous and degrades in performance over time as the number of records increases. Record ID values should be database generated, not programmed via formula. This is quite easily done in EF as it's just an attribute to add to the field you're using, like:
public abstract class Process
{
[Key]
public int Id {get; set}
public int Name {get; set}
public DateTime CreateDate{get; private set}
public DateTime UpdateDate{get; private set}
public virtual ICollection<ProcessContact> Contacts { get; set; }
}
or by convention. EF assumes the key is specified by the class name with "Id" appended to it:
public abstract class Process
{
public int ProcessId {get; set}
public int Name {get; set}
public DateTime CreateDate{get; private set}
public DateTime UpdateDate{get; private set}
public virtual ICollection<ProcessContact> Contacts { get; set; }
}
The Update datetime field can be done in a few different ways. EF6 can use stored procedures to perform database operations. YOU have to write the stored procedures, bake them into the database, and then tell EF how to use it.
Or, you can just set the field in your C# code and send the update to the database using normal SaveChanges in your EF context.