ПредишенСледващото

Когато работите с Рамката Entity във всички предишните примери, ние сме се позовава на договора Code-първо за автоматично откриване на връзка с базата данни. По подразбиране, Code-Първо се създаде база данни на локалния сървър. \ SQLEXPRESS с помощта на пълния контекст на име на клас за базата данни (например, пространство от имена + името на класа). Например, нашият проект, това означава, че Code-Първо се създаде база данни, наречена CodeFirst.SampleContext. Често това поведение е да се предефинират, по-специално, минахме името на базата данни в контекста на класа конструктор MyShop. Тази статия описва подробно името на конфигурацията на базата данни и да се свържете към нея.

Използването конфигурация прилагане на файла

Най-лесният начин да се контролира връзката с базата данни е да се използва конфигурация молба по делото. В конфигурационния файл, можете да замените основния договор Code-Първа и ПИН точка низ свързване към базата данни. Този подход е особено полезно, ако искате да промените низ връзка в контекст, за да покаже за дистанционно свързване с (не-местна) въз основа на данните, при разгръщане на приложението.

Чрез този подход е възможно да се използват множество модели на данните. Във всеки проект, в който ние се позоваваме на проект CodeFirst, ние можем да укажете низ връзка, т.е. един модел ще работи с различни бази данни.

За да укажете низ използваната връзка ConnectionString раздел конфигурация. По подразбиране низ връзка трябва да има същото име като контекст файл, и можете да посочите или пълното наименование и кратко (т.е. SampleContext или CodeFirst.SampleContext). Поради това, Entity Framework автоматично ще намери правилния низ връзка в конфигурационния файл и го използва. Следващият пример показва определянето на свързващи линии:

Изпълнете този пример и да се уверите, че Code-първо да създадете нова база данни с MyShop2 име за сегашния модел. Ако сте учили примери от предишни статии, че все още се премахне базов клас извикването на конструктора от контекст клас. В резултат на това ще бъдат създадени следните данни:

Entity рамка 6, създаване на база данни, връзка

Конфигуриране контекст класа връзка в конструктора

Над можете да видите как да се създаде низ връзка в конфигурационния файл, така че контекста ще го използвате автоматично чрез споразумения Код-на първо място. Сега нека да разгледаме някои начини за управление на база данни, връзка от кода.

Клас DbContext от конструктора по подразбиране включва няколко претоварени версии на дизайнери. Ако използвате някой от тези конструктори, Code-първо няма да използва споразумението за автоматично търсене на низ връзка. Най-простият вариант DbContext клас конструктора приема единствен параметър низ. Нека да видим как да използвате този конструктор на извлечения клас:

Този конструктор е преминал или име на база данни или напълно квалифициран низ връзка. Entity Framework е достатъчно умен, за да се прави разлика между име и връзка низ, в този пример, ние посочва името на базата данни.

Имайте предвид, че в този пример, ние наричаме претоварен конструктор от конструктор DbContext подразбиране производно SampleContext клас. С този подход към дизайна, когато създавате контекст обект в молбата Ви, низ връзка ще бъде автоматично избран от SampleContext конструктор по подразбиране. Понякога е необходимо да се уточни низ връзка за създаване на контекст обект. За да направите това, можете да добавите претоварен конструктор в контекста на един клас с претоварен повикване конструктор DbContext:

Сега кодът работи с данните при създаване на класа контекст обект, можете да укажете името на базата данни или низ връзка:

Този пример извлича данни на всички клиенти от маса MyShop2 на базата данни от клиентите, защото са посочили пълната връзка низ към базата данни. Ако в този пример, можете да създадете контекст обект с помощта на конструктора по подразбиране:

Споразумението използвате кода и първи за автоматично търсене на низ на свързване, и ако установи низ връзка с името или SampleContext CodeFirst.SampleContext, той се опитва да се свърже с базата данни с името CodeFirst.SampleContext.

Може да се чудите как да мине изрично името на низ контекст връзка клас конструктор, ако тя не отговаря на контекст клас. Можете да използвате по-кратък низ връзка с едно име на параметър:

Сега Code-На първо място е да се търси в конфигурационния файл с името на MyConnectionStringName на низ връзка.

Повторно използване на свързването към базата данни

Един от най-претоварени версии DbContext конструктора приема на връзка обект от космоса имена DbConnection System.Data.Common. Използването на тази възможност може да бъде полезно, ако искате да зададете множество обекти в контекста на една и съща връзка обекта, и не искам да се уточни всеки път, името на базата данни или низ връзка. Т.е. DbConnection обект може да се съхранява в специално приложение местоположение, и можете да се обърнете към него всеки път, когато се създаде контекст обект. По-долу е един пример:

В този пример, ние създадохме DbConnectionToMyShop клас да се свърже с MyShop на данните. Целта на този клас се предава на строителя, контекст подразбиране клас. Ние също така се създаде за удобство на претоварен конструктор - в кода на приложението, можете просто да преминат на обекта, който искате да се свържете. Връзки класове могат да бъдат определени в един файл и след това да се използват в рамките на заявлението. Вторият параметър в contextOwnsConnection на конструктор показва дали да изчисти обект връзка е необходимо, когато изтриете контекст обект.

Конфигуриране на споразуменията за връзка Code-Първи

Последният начин за контрол на връзката към базата данни е да се замени споразумения, които използва Code-First. Споразумение за конфигурацията на свързване се определя от IDbConnectionFactory интерфейс. Можете да приложат този интерфейс и го предаде на SetDefaultConnectionFactory на метод (DbConfiguration клас). като по този начин се преодолява съгласие по подразбиране код и първи.

Споразумение подразбиране изпълнява SqlConnectionFactory клас имена пространство System.Data.Entity.Infrastructure. Поведението по подразбиране се посочва, че доставчикът на доставчика на базата данни е SQL Server (събранието System.Data.SqlClient), името на сървъра -. \ SQLEXPRESS, както и да получите достъп до сървъра с помощта на Windows-удостоверяването (сървъра е достъпна за текущия потребител). Можете да замените тези споразумения, например, за да е ясно за кои рамка Entity, че искате да работите с MySQL доставчик.

Примерът по-долу показва как да се преодолеят тези споразумения, като се използва конфигурация клас наследен от DbConfiguration:

В този пример, ние промяна на името на сървъра, и уточни, че трябва да се използва достъп до удостоверяване SQL-сървър, базиран на потребителско име и парола. Обърнете внимание, за да определите контекста на класа, така че да използва конфигурация използва DbConfigurationType атрибут. За да се регистрирате нова конфигурация клас във файла Web.config, уеб приложението, което искате да изтриете раздел defaultConnectionFactory:

Също така можете да настроите конфигурацията за всички класове в контекста на прилагането и да не се използва DbConfigurationType атрибут. За да направите това, изберете имот codeConfigurationType раздел конфигурация entityFramework на:

В горния пример показва как да използвате стандартен доставчик на данни SQL Server, но можете да посочите други производители на бази данни, които са необходими за вашето приложение (MySQL, Oracle и т.н.)

Свързани статии

Подкрепете проекта - споделете линка, благодаря!