получить доступ к классам EF из библиотеки классов - как именно настроить / проверить строку подключения в клиенте? (получать ошибки) - PullRequest
0 голосов
/ 30 апреля 2010

Меня очень смущает вопрос о том, как вызывать мои классы EF в библиотеке классов из имеющегося у меня клиентского проекта? Все работало нормально, когда они были в одном проекте. Теперь я получаю сообщения об ошибках типа «Невозможно загрузить указанный ресурс метаданных».

Я видел различные идеи / предложения о том, как исправить строку подключения (например, создать App.config в вашем клиентском проекте и скопировать конфигурацию строки подключения из вашей библиотеки классов, что-то об изменении параметров подключения, чтобы скопировать в вывод и т. д.)

ВОПРОС - Может ли кто-нибудь предоставить надежный способ получения доступа к классу EF из отдельного рабочего проекта? (т.е. как получить правильную информацию о соединении с клиентом)

спасибо

1 Ответ

0 голосов
/ 10 октября 2012

Это сработало для меня: создайте частичный класс для вашего сгенерированного класса сущностей и добавьте следующие фабричные методы:

public partial class DbEntities : DbContext
{
    private DbEntities(string connectionString)
        : base(connectionString)
    {
    }
    public static DbEntities CreateContext()
    {
        return new DbEntities("connection string copied from app.config");
    }
}

Когда вам нужно подключиться к Db, используйте DbEntities.CreateContext (). «new DbEntities ()» не будет работать, потому что он попытается прочитать строку подключения из файла конфигурации.

Вы можете удалить конструктор по умолчанию «DbEntities ()» из сгенерированного файла или отредактировать сгенерированный файл и поместить строку подключения вместо «name = DbEntities»:

public DbEntities() : base("name=DbEntities") { }

но этот файл будет воссоздан при обновлении модели БД.

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