如何在没有app.conf文件的情况下使用EF Code-First

本文关键字:情况下 Code-First EF 文件 conf app | 更新日期: 2023-09-27 18:01:30

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

我怎么能"初始化连接"(希望这是正确的术语…)没有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;

如何在没有app.conf文件的情况下使用EF Code-First

吉洪的回答帮助了我。我添加了以下内容以供将来参考。我初始化了数据库。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; }
}

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

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

如果你有oracle提供商,所有的答案都没有帮助,试试这个:将entityFramework**defaultConnectionFactory**中的app.config条目更改为

type = " Oracle.ManagedDataAccess.EntityFramework。OracleConnectionFactory Oracle.ManagedDataAccess.EntityFramework"…

现在你需要发送给构造函数的是一个常规的连接字符串:

public partial class MyModel: DbContext{公共MyModel(String ConnectionString):基地(ConnectionString){}..........