如果我使用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;
任何提示都受到高度赞赏。
答案 0 :(得分:5)
学家Tihon的回答帮助了我。我正在添加以下内容以供将来参考。我在构造函数中初始化了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; }
}
答案 1 :(得分:3)
有各种实例化DbContext的方法(你的PartyDb可能派生自它)。我建议你看一下这个blog-post。对于您的具体问题,博客文章中的这一段应该适合:
您可以将完整的连接字符串传递给DbContext,而不仅仅是数据库或连接字符串名称。默认情况下,此连接字符串与System.Data.SqlClient提供程序一起使用;这可以通过将IConnectionFactory的不同实现设置到context.Database.DefaultConnectionFactory来更改。
答案 2 :(得分:0)
如果您有oracle提供程序,并且所有答案都没有帮助尝试: 将entityFramework中的app.config条目** defaultConnectionFactory **更改为
type =“Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory,Oracle.ManagedDataAccess.EntityFramework” ......
现在您需要发送到构造函数的是一个常规连接字符串:
public partial class MyModel:DbContext { public MyModel(String ConnectionString) :base(ConnectionString) { } ..........