DBContext类中的Connectionstring名称的存储库和工作单元错误

时间:2016-09-20 09:24:20

标签: c# asp.net entity-framework-6 repository-pattern unit-of-work

我正在使用Entity Framework 6.0,SQL Server 2012和ASP.NET 4.5处理Repository和工作单元设计模式  在这方面,我面临着一个奇怪的问题。

在编写DB Context类的代码时,我们传递Connectionstring或连接字符串名称,我得到了以下问题

internal class MyEntities : DbContext, IUnitOfWork, IDisposable
{
    public MyEntities()
        : base("Data Source=.;Initial Catalog=School;User ID=sa;Password=xxxxxx;")            
    {

        Database.SetInitializer<MyEntities>(new MyDatabaseInitializer<MyEntities>());
    }
    ...

    DbSet properties
    ...

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
    //
    }
    .
    .
    .
}

当我将完整的Connectionstring传递给基础构造函数时,如上所示,所有选择,插入,更新,删除操作工作文件

但是,当我使用Connectionstring Name作为基础构造函数时,如下所示,它给了我各种错误。

    public MyEntities()
        : base("Name=MyEntities")            
    {

        Database.SetInitializer<MyEntities>(new MyDatabaseInitializer<MyEntities>());
    }

使用SaveChanges()方法和DbSet<TEntity> dbSet = this.GetQuery() as DbSet<TEntity>;

它给了我

  

System.Data.SqlClient.SqlException:用户'xxxx \ xxxx'登录失败。

当从以下方法调用MyEntities的对象时,我得到

  

无效的操作;连接已关闭

public IUnitOfWork Create()
    {
        DbContext context;
        lock (EFUnitOfWorkFactory.LockObject)
        {
            context = new MyEntities();
            //if (context.Database.Connection.State == ConnectionState.Closed)
            //    context.Database.Connection.Open();
        }
        return new EFUnitOfWork(context);
    }

web.config中的My Connectionstring如下

<connectionStrings>
    <add name="MyEntities" connectionString="Data Source=.;Initial Catalog=School;Integrated Security=true;User ID=sa;Password=xxxxxx;" providerName="System.Data.SqlClient" /> 
 </connectionStrings>

即使我更改了数据源值。到服务器的Servername或IPAddress不起作用

0 个答案:

没有答案