我有一个使用Entity Framework 6进行一些数据库操作的DLL.我正在使用数据库第一种方法.关于实体框架的模型和所有内容,如App.config中的连接字符串,都是通过Visual Studio中的wizzard创建的.
所以我编译了dll并将其与相应的.config放在使用dll的应用程序所期望的文件夹中.
一切正常,直到我达到实际数据库调用的程度.我收到错误:
找不到MyDatabaseEntity的连接字符串
正如我所说,自动生成的连接字符串是在dll的配置文件中.我无法更改应用程序的App.config.但是应用程序移交了一个对象,该对象具有我自己构建连接字符串所需的所有信息.所以我正在寻找一种在不依赖配置文件的情况下在代码中设置连接字符串的方法.我找到的数据库第一种方法的所有教程都使用这种方法.我在这里发现了一条帖子,说明在创建Object时简单地将连接字符串作为参数
MyDatabaseEntities = new MyDatabaseEntities(dbConnect);
Run Code Online (Sandbox Code Playgroud)
但'MyDatabaseEntities'没有带任何参数的构造函数
public partial class MyDatabaseEntities : DbContext
{
public MyDatabaseEntities()
: base("name=MyDatabaseEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<MyTable> MyTable { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种迭代数据库中所有表的方法.
到目前为止我已经想出了这个:
DECLARE @TableName VARCHAR(MAX)
DECLARE MyCursor CURSOR
FOR
SELECT
DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG ='MyDB'
AND TABLE_SCHEMA=N'dbo'
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT *
FROM @TableName
FETCH NEXT FROM MyCursor INTO @TableName
END
CLOSE MyCursor
DEALLOCATE MyCursor
Run Code Online (Sandbox Code Playgroud)
我在While语句中收到一条错误消息The @TableName tablevariable must be declared
(从德语翻译).
我知道应该有类型的变量TABLE
在FROM @TableName
,但我还没有找到如何做到这一点,只是如何声明,我不希望有新表.