C# 如何在没有app.conf文件的情况下首先使用EF代码?
如果我使用app.conf文件定义SQL CE 4.0 DB的连接,我的应用程序工作正常 如果代码中没有app.conf,如何“初始化连接”(希望这是正确的术语…) 以下是我到目前为止的情况(不多):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
非常感谢您的任何提示。有各种方法可以实例化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”);