Это частичное решение ... вы можете переопределить строку подключения в методе OnContextCreated.Таким образом, вы могли бы сделать что-то вроде этого:
Private Sub OnContextCreated()
Dim fi As FieldInfo = GetType(ObjectContext).GetField("_connection", BindingFlags.Instance Or BindingFlags.NonPublic)
Dim Environment As String = "" 'pull from web.config
'Change the connection string based on which environment you are looking at
If Environment = "dev" Then
fi.SetValue(Me, New EntityConnection("dev connection string"))
ElseIf Environment = "prod" Then
fi.SetValue(Me, New EntityConnection("prod connection string"))
End If
End Sub
Таким образом, вам не нужно будет каждый раз удалять и заново создавать файл .edmx, поскольку строка подключения будет указывать на правильную базу данных - единственноевам нужно будет отредактировать значение rowguid, так как оно различно для двух баз данных.
Еще одна вещь, которую следует учитывать ... вы можете сопоставить структуру сущностей create / update / delete с пользовательскими хранимыми процедурами.Поэтому, если у вас есть только один или два столбца, которые различаются между серверами, вы можете иметь на каждом сервере настраиваемые хранимые процедуры, которые имеют дело с различиями столбцов между ними.