Что эквивалентно ExecuteCommand LINQ-to-SQL в Entity Framework? - PullRequest
3 голосов
/ 10 ноября 2009

Я портирую приложение, работающее в LINQ-to-SQL, на Entity Framework , и мне не удается найти эквивалент ExecuteCommand :

db.ExecuteCommand("INSERT Infos (Title) VALUES ('this is an added title')");

Я нашел этот сайт , который сообщает мне, что возможно реализовать ExecuteCommand как метод расширения в вашем ObjectContext, оставив существующий код без изменений, добавив этот код статический метод в вашем проекте:

public static int ExecuteCommand(this ObjectContext objectContext,
                                string command) {
    DbConnection connection = ((EntityConnection)objectContext.Connection).StoreConnection;
    bool opening = (connection.State == ConnectionState.Closed);
    if (opening)
        connection.Open();

    DbCommand cmd = connection.CreateCommand();
    cmd.CommandText = command;
    cmd.CommandType = CommandType.StoredProcedure;
    try {
        return cmd.ExecuteNonQuery();
    }
    finally {
        if (opening && connection.State == ConnectionState.Open)
            connection.Close();
    }
}

Но я попытался поместить его (1) в класс, в котором я его использую, (2) в файл класса, сгенерированный Entity, (3) в статический класс в проекте, но всегда получаю различные ошибки. Куда мне нужно в точности поместить этот метод?

Сайт выше также сказал:

ExecuteCommand рассматривается как улучшение для будущего выпуска Entity Framework

Существует ли ExecuteCommand () в новейшей версии Entity Framework? Я использую Entity Framework, установленную с Visual Studio 2008 SP1.

1 Ответ

2 голосов
/ 10 ноября 2009
Класс

.NET Framework 4 ObjectContext имеет методы ExecuteStoreCommand и ExecuteStoreQuery , которые выглядят так, как вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...