Оба метода для хранения свойств объекта совершенно действительны. Необходимо отступить от прагматических соображений. Попытайтесь ответить на следующий вопрос:
удобочитаемость имеет значение?
...
На днях сам искал это в Google, это пример, который я нашел, надеюсь, он поможет
static void ExecuteSql(ObjectContext c, string sql)
{
var entityConnection = (System.Data.EntityClient.EntityConnection)c.Connection;
DbConnection conn = entityConnection.StoreConnection;
ConnectionState initialState = conn.State;
try
{
if (initialState != ConnectionState.Open)
conn.Open();
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
}
finally
{
if (initialState != ConnectionState.Open)
conn.Close();
}
}
В EF 4.0 это довольно просто, потому что есть новые методы в ObjectContext
, которые позволяют выполнять команды сохранения (например, SQL) напрямую:
См. Это: ExecuteStoreCommand
Если вы все еще используете EF 3.5 SP1 вы все равно можете выполнить запрос непосредственно к базе данных, если вам действительно это нравится:
var econn = ctx.Connection as EntityConnection;
var dbconn = econn.StoreConnection;
на этом этапе у вас есть доступ к соединению (dbconn) с базовой базой данных, поэтому вы можете использовать обычный код ADO.NET для выполнения запросов и т. д.
Надеюсь, это поможет
Alex
@Alex James, из любопытства, будет ли это эффективным для запуска полнотекстового фрагмента кода sql , так как не должно быть накладных расходов на производительность, верно? Например, запуск того же полнотекстового кода sql прямо как запрос в sql management studio.