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