Я использую Code First Entity Framework, чтобы выполнить весь поиск в моей базе данных. К сожалению, там, где я работаю, они обязались выполнять любые обновления / вставки / удаления с использованием хранимых процедур.
Я начал со следующего:
public partial class MyContext
{
public void AddStatus(int id, string status)
{
var connection = (SqlConnection)this.Database.Connection;
if( connection.State != ConnectionState.Open )
connection.Open();
SqlCommand cmd = connection.CreateCommand();
// ...
cmd.ExecuteNonQuery();
}
}
Некоторое время это работало нормально, пока я не наткнулся на сценарий, в котором мне нужно было извлекать данные из моей базы данных непосредственно после этого кода, используя тот же контекст:
MyContext db = new MyContext();
db.AddStatus(1, "Open");
var item = db.Items.Find(1);
Я получил следующую ошибку:
ArgumentException - EntityConnection can only be constructed with a closed DbConnection.
Можно ли как-то смешать код, подобный этому, или мне нужно создать другое соединение с моей базой данных? Будут ли возникать проблемы, если я создам новое соединение, такое как Распределенные транзакции, если мне нужна область транзакции?