【发布时间】:2016-09-18 16:01:14
【问题描述】:
我试图了解如何为我的 DbContext 动态创建连接字符串,但我的应用程序说它在 app.config 中没有连接字符串(这是正确的,因为我不想在应用程序中使用它.config 或 web.config)。这就是我所拥有的:
在我的解决方案中,我有一个名为 InterfaceApp 的项目。它是一个 ASP.NET MVC 5 应用程序。当我将连接字符串放入 web.config 时,一切似乎都正常。
在我的解决方案中,我还有一个名为 InterfaceApp.Connector.Erp1 的项目。在这里,我想连接到一个 ERP 应用程序并获取一些项目。所以在我的存储库中,我有:
namespace InterfaceApp.Connector.Erp1.Repository
{
internal class ItemRepository : IItemRepository
{
public IEnumerable<Item> Items
{
get
{
List<Item> items = new List<Item>();
using (Models.Entities context = new Models.Entities())
{
var itemList = context.Items.ToList();
foreach(var item in itemList)
{
items.Add(new Item() { Id = item.ID, Description = item.Description, ItemCode = item.ItemCode });
}
}
return items.ToList();
}
}
}
}
我创建了一个部分类来连接数据库:
namespace InterfaceApp.Connector.Erp1.Models
{
public partial class Entities
{
public Entities(string connectionString)
: base(ConnectionString())
{
}
private static string ConnectionString()
{
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder
{
DataSource = "MyServer", //When this works it will be dynamic
InitialCatalog = "XXX", //When this works it will be dynamic
PersistSecurityInfo = true,
IntegratedSecurity = true,
MultipleActiveResultSets = true,
};
var entityConnectionStringBuilder = new EntityConnectionStringBuilder
{
Provider = "System.Data.SqlClient",
Metadata = "res://*/Models.Erp1Model.csdl|res://*/Models.Erp1Model.ssdl|res://*/Erp1Model.msl",
ProviderConnectionString = sqlBuilder.ConnectionString
};
return entityConnectionStringBuilder.ConnectionString;
}
}
}
由 EF6(Db First)自动生成的 Context 类如下所示:
namespace InterfaceApp.Connector.Erp1.Models
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class Entities : DbContext
{
public Entities()
: base("name=Entities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Items> Items { get; set; }
}
}
当我运行我的应用程序时,调试器会停在自动生成的类上,但不会停在我的部分类上。因为它在我的 app.config 和 web.config 中找不到连接字符串 Entities,所以它会生成一个错误,指出在应用程序配置文件中找不到连接字符串。我做错了什么?
【问题讨论】:
标签: c# entity-framework