简体   繁体   中英

What is the equivalent of LINQ-to-SQL's ExecuteCommand in Entity Framework?

I am porting an application running on LINQ-to-SQL to Entity Framework , and am having trouble finding an equivalent to ExecuteCommand :

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

I found this site which tells me that it is possible to implement ExecuteCommand as an extension method on your ObjectContext, leaving the existing code unchanged by adding this code to a static method in your project:

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();
    }
}

But I've tried putting it (1) in the class where I use it, (2) in the Entity generated class file, (3) in a static class in the project, but always get various errors. Where do I need to put this method exactly?

The above site also said:

ExecuteCommand is being considered as an enhancement for a future release of the Entity Framework

Does ExecuteCommand() exist in the newest version of Entity Framework? I am using the Entity Framework that was installed with Visual Studio 2008 SP1.

.NET Framework 4的ObjectContext类具有ExecuteStoreCommandExecuteStoreQuery方法,这些方法似乎正是您所寻找的。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM