C# 如何在没有app.conf文件的情况下首先使用EF代码?

C# 如何在没有app.conf文件的情况下首先使用EF代码?,c#,.net,entity-framework,c#-4.0,ef-code-first,C#,.net,Entity Framework,C# 4.0,Ef Code First,如果我使用app.conf文件定义SQL CE 4.0 DB的连接,我的应用程序工作正常 如果代码中没有app.conf,如何“初始化连接”(希望这是正确的术语…) 以下是我到目前为止的情况(不多): 非常感谢您的任何提示。有各种方法可以实例化DbContext(您的PartyDb可能就是从中派生出来的)。我建议你看看这个。对于您的具体问题,博客文章中的这一段应该适合: 您可以向DbContext传递完整的连接字符串,而不仅仅是数据库或连接字符串名称。默认情况下,此连接字符串与System.Da

如果我使用app.conf文件定义SQL CE 4.0 DB的连接,我的应用程序工作正常

如果代码中没有app.conf,如何“初始化连接”(希望这是正确的术语…)

以下是我到目前为止的情况(不多):


非常感谢您的任何提示。

有各种方法可以实例化DbContext(您的PartyDb可能就是从中派生出来的)。我建议你看看这个。对于您的具体问题,博客文章中的这一段应该适合:

您可以向DbContext传递完整的连接字符串,而不仅仅是数据库或连接字符串名称。默认情况下,此连接字符串与System.Data.SqlClient提供程序一起使用;可以通过在context.Database.DefaultConnectionFactory上设置不同的IConnectionFactory实现来更改此设置


有多种实例化DbContext的方法(PartyDb可能从中派生)。我建议你看看这个。对于您的具体问题,博客文章中的这一段应该适合:

您可以向DbContext传递完整的连接字符串,而不仅仅是数据库或连接字符串名称。默认情况下,此连接字符串与System.Data.SqlClient提供程序一起使用;可以通过在context.Database.DefaultConnectionFactory上设置不同的IConnectionFactory实现来更改此设置


提洪的回答帮助了我。我添加以下内容以供将来参考。我在构造函数中初始化了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; }

}
公共部分类MyDb:DbContext
{
公共静态字符串连接
{
收到
{
var result=new SqlCeConnectionStringBuilder();
结果[“数据源”]=“MyDatabaseFile.sdf”;
返回result.ToString();
}
}
公共MyDb()
:底座(连接)
{
Database.DefaultConnectionFactory=newsqlceconnectionfactory(“System.Data.SqlServerCe.4.0”);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
}
公共DbSet MyTable{get;set;}
}

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

}
公共部分类MyDb:DbContext
{
公共静态字符串连接
{
收到
{
var result=new SqlCeConnectionStringBuilder();
结果[“数据源”]=“MyDatabaseFile.sdf”;
返回result.ToString();
}
}
公共MyDb()
:底座(连接)
{
Database.DefaultConnectionFactory=newsqlceconnectionfactory(“System.Data.SqlServerCe.4.0”);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
}
公共DbSet MyTable{get;set;}
}

如果您有oracle provider,但所有答案都没有帮助,请尝试以下方法: 将entityFramework**defaultConnectionFactory**中的app.config条目更改为

type=“Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory,Oracle.ManagedDataAccess.EntityFramework”

现在,您只需要向Constructor发送一个常规连接字符串:

公共部分类MyModel:DbContext { 公共MyModel(字符串连接字符串) :基本(连接字符串) { }
如果您有oracle provider,但所有答案都没有帮助,请尝试以下方法: 将entityFramework**defaultConnectionFactory**中的app.config条目更改为

type=“Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory,Oracle.ManagedDataAccess.EntityFramework”

现在,您只需要向Constructor发送一个常规连接字符串:

公共部分类MyModel:DbContext { 公共MyModel(字符串连接字符串) :基本(连接字符串) { } 感谢链接!:-)我在这个网站上找到的解决方案有效:Database.DefaultConnectionFactory=new-SqlCeConnectionFactory(“System.Data.SqlServerCe.4.0”);感谢链接!:-)我在这个网站上找到的解决方案有效:Database.DefaultConnectionFactory=new-SqlCeConnectionFactory(“System.Data.SqlServerCe.4.0”);