Web Api 项目和另一个数据项目都有 entity framework 只需要数据项目中的连接字符串
Web Api project with another data project both have entity framework only wanting connection string in data project
我有 2 个项目:1 Web api (ReportingApi) 2. Data (ReportingApi.Data)
Web Api
将不会连接到 class 库(数据)项目 web.config 中没有连接字符串,即我的数据项目中的连接字符串 duplicate
app.config
.
两者都有
<connectionStrings>
<add name="ScriptsContext" connectionString="Data Source=SQLserverblah;Initial Catalog=blahdb;User ID=blah;Password=blah" providerName="System.Data.SqlClient" />
</connectionStrings>
数据项目DbContext
public class ScriptsContext : DbContext
{
public DbSet<Question> Questions { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<ScriptsContext>(null);
modelBuilder.Entity<Question>().ToTable("Question", schemaName: "dbo");
}
}
读取的唯一配置是执行项目的配置。 IE。您是 运行 Web API 网站并且使用了它的配置。
如果您希望数据项目成为黑盒,您将需要对连接字符串进行硬编码或从配置以外的来源获取它。
如果您想测试这个理论,您可以从 Data 项目中删除连接字符串并仍然启动 Web API。您需要数据项目中的连接字符串的唯一原因是,如果您使用的是 ORM,例如 Entity Framework,它允许您在 Visual Studio.
内更新生成的代码文件
希望对您有所帮助。
我有 2 个项目:1 Web api (ReportingApi) 2. Data (ReportingApi.Data)
Web Api
将不会连接到 class 库(数据)项目 web.config 中没有连接字符串,即我的数据项目中的连接字符串 duplicate
app.config
.
两者都有
<connectionStrings>
<add name="ScriptsContext" connectionString="Data Source=SQLserverblah;Initial Catalog=blahdb;User ID=blah;Password=blah" providerName="System.Data.SqlClient" />
</connectionStrings>
数据项目DbContext
public class ScriptsContext : DbContext
{
public DbSet<Question> Questions { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<ScriptsContext>(null);
modelBuilder.Entity<Question>().ToTable("Question", schemaName: "dbo");
}
}
读取的唯一配置是执行项目的配置。 IE。您是 运行 Web API 网站并且使用了它的配置。
如果您希望数据项目成为黑盒,您将需要对连接字符串进行硬编码或从配置以外的来源获取它。
如果您想测试这个理论,您可以从 Data 项目中删除连接字符串并仍然启动 Web API。您需要数据项目中的连接字符串的唯一原因是,如果您使用的是 ORM,例如 Entity Framework,它允许您在 Visual Studio.
内更新生成的代码文件希望对您有所帮助。