在 Entity Framework C++/CLI 上配置连接字符串
Configure Connection String on Entity Framework C++/CLI
我有几个项目(我正在尝试连接到本地数据库):
- DB_API项目(C#项目)使用EF连接DB
- NativeCallingCLR.MixedDLL (C++/CLI) - 调用 C# DB API 方法的 IL 桥
- NativeCallingCLR.Native (C++) - 从 C++/CLI 实现 API 以连接到 DB
此项目结构基于:
https://www.codeproject.com/Articles/35041/Mixing-NET-and-native-code
我正在尝试将 EF 配置为不连接 运行 程序集配置,而是连接其他配置/为本机 c++ 项目创建一个配置文件。
我试过这样配置连接:
创建这样的 class 结构:
public partial class ABC : DbContext
{
public ABC(DbConnection conn) : base (conn,true)
{
}
}
然后像这样创建 DbConnection 对象:
public int CreateConnection(string DBConnectionString, string DBProviderName)
{
var conn = DbProviderFactories.GetFactory(DBProviderName).CreateConnection();
conn.ConnectionString = DBConnectionString;
db = new ABC(conn);
return _PASS;
}
我用这些参数调用 CreateConnection:
DBConnectionString="metadata=res://*/InDBM.csdl|res://*/InDBM.ssdl|res://*/InDBM.msl;provider=System.Data.SqlClient;provider connection string='data source=localhost;initial catalog=Mycatalog;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework'"
DBProviderName="System.Data.EntityClient"
当我尝试连接 app.config 和 C# 运行 程序集时,这些参数工作正常,但是当我尝试连接创建 Dbconnection 对象时,此方法失败。
有人知道我做错了什么吗?
好吧,看来我并没有真正理解我在做什么。
这个 Whosebug post 解决了我的问题:
How do I programmatically set the connection string for Entity-Framework Code-First?
我有几个项目(我正在尝试连接到本地数据库):
- DB_API项目(C#项目)使用EF连接DB
- NativeCallingCLR.MixedDLL (C++/CLI) - 调用 C# DB API 方法的 IL 桥
- NativeCallingCLR.Native (C++) - 从 C++/CLI 实现 API 以连接到 DB
此项目结构基于: https://www.codeproject.com/Articles/35041/Mixing-NET-and-native-code
我正在尝试将 EF 配置为不连接 运行 程序集配置,而是连接其他配置/为本机 c++ 项目创建一个配置文件。
我试过这样配置连接:
创建这样的 class 结构:
public partial class ABC : DbContext
{
public ABC(DbConnection conn) : base (conn,true)
{
}
}
然后像这样创建 DbConnection 对象:
public int CreateConnection(string DBConnectionString, string DBProviderName)
{
var conn = DbProviderFactories.GetFactory(DBProviderName).CreateConnection();
conn.ConnectionString = DBConnectionString;
db = new ABC(conn);
return _PASS;
}
我用这些参数调用 CreateConnection:
DBConnectionString="metadata=res://*/InDBM.csdl|res://*/InDBM.ssdl|res://*/InDBM.msl;provider=System.Data.SqlClient;provider connection string='data source=localhost;initial catalog=Mycatalog;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework'"
DBProviderName="System.Data.EntityClient"
当我尝试连接 app.config 和 C# 运行 程序集时,这些参数工作正常,但是当我尝试连接创建 Dbconnection 对象时,此方法失败。
有人知道我做错了什么吗?
好吧,看来我并没有真正理解我在做什么。
这个 Whosebug post 解决了我的问题:
How do I programmatically set the connection string for Entity-Framework Code-First?