Code First Entity Framework 4: сбой при аутентификации SQL - PullRequest
5 голосов
/ 06 сентября 2010

Я работаю с Entity Framework 4 и CTP 4, и мне это до сих пор нравится. Я могу заставить его работать правильно, когда я использую аутентификацию Windows для подключения к базе данных, но когда я переключаюсь на аутентификацию SQL, происходит сбой с сообщением ниже. Я назначил пользователю роль системного администратора, и его база данных по умолчанию - master.

Ошибка:

Эта операция требует подключения в базу данных «мастер». Невозможно создать соединение с «мастером» база данных, потому что исходная база данных соединение было открыто и учетные данные были удалены из Строка подключения. Поставка нераскрытого подключение.

Есть идеи?

... еще немного подробностей об ошибке:

[InvalidOperationException: This operation requires a connection to the 'master' database. Unable to create a connection to the 'master' database because the original database connection has been opened and credentials have been removed from the connection string. Supply an unopened connection.]
   System.Data.SqlClient.SqlProviderServices.UsingMasterConnection(SqlConnection sqlConnection, Action`1 act) +344
   System.Data.SqlClient.SqlProviderServices.DbDatabaseExists(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection) +231
   System.Data.Objects.ObjectContext.DatabaseExists() +84
   System.Data.Entity.Internal.DatabaseOperations.Exists(ObjectContext objectContext) +9
   System.Data.Entity.Infrastructure.Database.Exists() +53
   System.Data.Entity.Infrastructure.RecreateDatabaseIfModelChanges`1.InitializeDatabase(TContext context) +129
   System.Data.Entity.Infrastructure.<>c__DisplayClass2`1.<SetInitializer>b__0(DbContext c) +75
   System.Data.Entity.Infrastructure.Database.Initialize() +207
   System.Data.Entity.Internal.InternalContext.Initialize() +70
   System.Data.Entity.Internal.LazyInternalContext.get_ObjectContext() +9
   System.Data.Entity.Internal.InternalContext.TryUpdateEntitySetMappingsForType(Type entityType) +51
   System.Data.Entity.Internal.InternalContext.UpdateEntitySetMappingsForType(Type entityType) +17
   System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +24
   System.Data.Entity.Internal.Linq.EfInternalQuery`1.Initialize() +62
   System.Data.Entity.Internal.Linq.EfInternalQuery`1.get_Provider() +9
   System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() +13
   System.Linq.Queryable.Select(IQueryable`1 source, Expression`1 selector) +63

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010

Это сработало для меня.

   Database.SetInitializer<YourDbContext>(null);

Благодаря http://social.msdn.microsoft.com/Forums/en/adonetefx/thread/870959ef-5c06-4c3e-b9f8-454346592280

1 голос
/ 05 августа 2011

В отношении следующего исключения:
System.InvalidOperationException: эта операция требует подключения к базе данных «master». Невозможно создать соединение с базой данных «master», поскольку исходное соединение с базой данных было открыто, а учетные данные были удалены из строки соединения. Поставьте неоткрытое соединение. System.Data.SqlClient.SqlException: сбой входа для пользователя 'sa'

Entity Framework 4.1 Update 1 содержит исправление ошибки, устраняющее необходимость указывать «Persist Security Info = True» в строке подключения при использовании аутентификации SQL. http://www.microsoft.com/download/en/details.aspx?id=26825

...