Entity Framework прямой запрос без контекста базы

268
09 декабря 2016, 08:45

Возможно ли сделать запрос используя средства EF не описывая при этом контекст базы данных, либо создав и описав его непосредственно в функции перед запросом?

Answer 1

Можно создать контекст и выполнить прямой запрос:

public class Client
{
    public int Id { get; set; }
    public string Name { get; set; }
}
public  class Program
{
    public static void Main()
    {
        var context = new DbContext("ConnectionString");
        var xxx = context.Database.SqlQuery<Client>("select Id, Name from Clients").ToList();
    }
}

В нём не будет DBSet'ов, но запросы выполнять через SqlQuery и ExecuteSqlCommand можно.
Но зачем использовать EF, если Вы не хотите использовать EF?

Answer 2

Если вы не хотите описывать контекст, то вам и не нужны все приемущества шаблона единица работы с репозитарием реализуемым Entity Framework. Достаточно воспользоваться технологией ADO.NET (примеры кода)

        string connectionString =
            "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=true";
        // Provide the query string with a parameter placeholder.
        string queryString =
            "SELECT ProductID, UnitPrice, ProductName from dbo.products "
                + "WHERE UnitPrice > @pricePoint "
                + "ORDER BY UnitPrice DESC;";
        // Specify the parameter value.
        int paramValue = 5;
        // Create and open the connection in a using block. This
        // ensures that all resources will be closed and disposed
        // when the code exits.
        using (SqlConnection connection =
            new SqlConnection(connectionString))
        {
            // Create the Command and Parameter objects.
            SqlCommand command = new SqlCommand(queryString, connection);
            command.Parameters.AddWithValue("@pricePoint", paramValue);
            // Open the connection in a try/catch block. 
            // Create and execute the DataReader, writing the result
            // set to the console window.
            try
            {
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    Console.WriteLine("\t{0}\t{1}\t{2}",
                        reader[0], reader[1], reader[2]);
                }
                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadLine();
        }

Ещё можете посмотреть в сторону LINQ to SQL

READ ALSO
Переименовывание файла на сервере

Переименовывание файла на сервере

Вот у меня закачен на сервере файл "файлtxt", и мне его надо без перекачки переименовать

230
Проблемы c FTP C#

Проблемы c FTP C#

Вот код

328
WPF listView Обновление эллементов

WPF listView Обновление эллементов

Всем приветУ меня есть listView

855
Пересылаемое сообщение в Outlook

Пересылаемое сообщение в Outlook

Когда поступает новое сообщение то он выдаёт MessageBox и при нажатии в нём ОК открывается только что полученное сообщение, для пересылкиПроблема...

563