Как использовать EF Code-First без файла app.conf? - PullRequest
1 голос
/ 08 июля 2011

Если я использую файл app.conf для определения соединения для БД SQL CE 4.0, мое приложение работает нормально.

Как я могу "инициализировать соединение" (надеюсь, это правильный термин ...) без app.conf, в коде?

Вот что у меня есть (не очень):

SqlCeConnectionStringBuilder builder = new SqlCeConnectionStringBuilder();
builder["Data Source"] = "db.sdf";               

//What is missing here?

PartyDB DB = new PartyDB();

var dinners = from d in DB.Dinners                        
              select d;

Любой намек очень важен.

Ответы [ 3 ]

5 голосов
/ 20 сентября 2011

J.Ответ Тихона мне помог.Я добавляю следующее для дальнейшего использования.Я инициализировал Database.DefaultConnectionFactory в конструкторе.

public partial class MyDb: DbContext
{
    public static string Connection
    {
        get
        {

            var result = new SqlCeConnectionStringBuilder();

            result["Data Source"] = "MyDatabaseFile.sdf";

            return result.ToString();
        }
    }

    public MyDb()
        : base(Connection)
    {
        Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

    }

    public DbSet<MyTable> MyTable { get; set; }

}
3 голосов
/ 08 июля 2011

Существуют различные методы создания экземпляра DbContext (из которого, вероятно, получен ваш PartyDb). Я рекомендую вам взглянуть на это сообщение в блоге . Для вашей конкретной задачи этот абзац из поста блога должен подойти:

Вы можете передать полную строку подключения в DbContext, а не просто имя базы данных или строки подключения. По умолчанию эта строка подключения используется с поставщиком System.Data.SqlClient; это можно изменить, установив другую реализацию IConnectionFactory в context.Database.DefaultConnectionFactory.

0 голосов
/ 04 сентября 2016

Если у вас есть провайдер оракула, и все ответы не помогли, попробуйте это: Изменение записи app.config в entityFramework ** defaultConnectionFactory ** на

type = "Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory, Oracle.ManagedDataAccess.EntityFramework" ......

Теперь все, что вам нужно отправить на конструктор - это обычная строка подключения:

открытый частичный класс MyModel: DbContext { public MyModel (String ConnectionString) : base (ConnectionString) { } ..........

...