Here is a great article about the code first approach, including production deployment at the bottom: http://msdn.microsoft.com/en-us/magazine/hh126815.aspx
You could use a tool such as Red Gate's SQL Compare to analyze differences between your development environment and target environment to build change scripts that will allow your DBA to perform the migration.
Another thing you may want to do is add an entity called "AppVersion" to your code-first context. Then, override the Seed() method of your DropCreateDatabaseIfModelChanges IDatabaseInitializer so that it writes the current application version, or maybe the source control revision number using a continuous build.
Example:
public class OrderDbInitializer : DropCreateDatabaseIfModelChanges<OrderContext>
{
protected override void Seed(OrderContext context)
{
context.AppVersion.Add(new AppVersion() {Version = Assembly.GetExecutingAssembly().GetName().Version.ToString()});
context.SaveChanges();
}
}
This way, you would always know which version of your code is associated to the database. You could also add more code to the Seed() method to create the sample data developers need to use while writing the application.
Finally, you would not want to use the DropCreateDatabaseIfModelChanges initializer in production, so using a config transform or some Factory pattern would need to be used.
Hope that helps give you some ideas.