我在类库中使用 EF6(数据库优先)
当我按照向导添加表时,我选择不在 app.config 中存储连接字符串,而是发送连接字符串。
我以前没有这样做过。通常我选择将连接字符串放在 app.config 文件中。
我现在完全不知道我是如何调用一个函数并将连接字符串传递给它的。
我希望以下是我的解决方案中的相关代码片段。
在 app.config 中 - EF 自动添加了这个:
<connectionStrings>
<add name="cerviondemoEntities" connectionString="metadata=res://*/DatabaseModel.cervionEDM.csdl|res://*/DatabaseModel.cervionEDM.ssdl|res://*/DatabaseModel.cervionEDM.msl;provider=System.Data.SqlClient;provider connection string="data source=DEVBOX;initial catalog=cerviondemo;user id=sa;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
我自动生成的上下文类如下所示:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace CervionFunctions.DatabaseModel
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class cerviondemoEntities : DbContext
{
public cerviondemoEntities()
: base("name=cerviondemoEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Customer> Customers { get; set; }
public virtual DbSet<Ticket> Tickets { get; set; }
}
}
最终,我尝试调用以下测试函数:
public static List<Customer> customersToUpdate()
{
cerviondemoEntities db;
using (db = new DatabaseModel.cerviondemoEntities())
{
var result = from customers in db.Customers
select customers;
return result.ToList();
}
}
我不知道如何将连接字符串发送到该函数。
最佳答案
按照惯例, Entity Framework 采用与上下文同名的连接字符串。 例如:
public cerviondemoEntities()
: base("name=cerviondemoEntities")
{
}
DbContext 类有一个采用连接字符串的构造函数。您可以添加另一个将连接字符串作为参数的构造函数,并将其传递给基本构造函数。
public cerviondemoEntities(string connectionString) : base(connectionString)
{
}
一定要创建一个分部类,这样你添加的构造函数就不会被覆盖。
示例连接字符串:
<connectionStrings>
<add name="cerviondemoEntities" connectionString="data source=server\database;initial catalog=catalog;persist security info=True;user id=user;password=password;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
关于c# - 将连接字符串传递给 Entity Framework 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24240761/