Я пытаюсь запустить модульный тест с N-модулем в проекте. В проекте есть файл .edmx, так что это не многопроектная проблема, которую я вижу у многих людей. Я сохранил все значения по умолчанию от того, что было автоматически сгенерировано инструментом. Мой файл Web.config имеет строку подключения в <connectionStrings>
:
<connectionStrings>
<add name="LCFEntities" connectionString="metadata=res://*/LCF.csdl|res://*/LCF.ssdl|res://*/LCF.msl;provider=System.Data.SqlClient;provider connection string='Data Source=xxxxx;Initial Catalog=xxx;Persist Security Info=True;User ID=LCF_admin;Password=xxxx;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" />
</connectionStrings>
И в LCF.designer.vb он ищет правильное имя:
''' <summary>
''' Initializes a new LCFEntities object using the connection string found in the 'LCFEntities' section of the application configuration file.
''' </summary>
Public Sub New()
MyBase.New("name=LCFEntities", "LCFEntities")
MyBase.ContextOptions.LazyLoadingEnabled = true
OnContextCreated()
End Sub
И это ошибка в этой строке Dim db As New LCFEntities()
. Проект является проектом веб-приложения, и я создал каталог для решения. Не уверен, что это имеет значение.
Ошибка:
The specified named connection is either not found in the configuration, not intended
to be used with the EntityClient provider, or not valid.
У кого-нибудь есть подсказка?
Edit:
Это тест, который не проходит в строке Dim db as New LCFEntities()
:
<Test()> _
Public Sub insertTest()
Dim areaName As String = "Test Category"
Dim db As New LCFEntities()
Dim area = db.CreateObject(Of Area)()
area.DateCreated = Date.Now()
area.DateModified = Date.Now()
area.Id = Guid.NewGuid()
area.LastUpdatedBy = "Jimmy"
area.CreatedBy = "Jimmy"
area.Name = areaName
db.Area.AddObject(area)
db.SaveChanges()
Dim categoryExists As Boolean = False
If (db.Area.Where(Function(x) x.LocalId = area.LocalId).Count > 1) Then
categoryExists = True
End If
End Sub
Я могу подтвердить, что мои файлы конфигурации не видны должным образом, я попытался запустить модульный тест, проверяя количество строк подключения в файле конфигурации, он поднялся до 1, когда это должно было быть 3. Встроенный EF так отличается от Linq2SQL? Я написал тесты и отлично их использовал с файлом .dbml, и эти соединения хранятся в конфигурации, почему EF не видны?
Редактировать последние:
Я побежал:
Dim configPath As String = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
, чтобы увидеть мой файл конфигурации, но после просмотра всей информации о настройке у меня есть следующая статистика:
ApplicationBase "C:\Users\Me\documents\visual studio 2010\Projects\LcmsEfTest\LcmsEfTest\bin" String
ApplicationBaseKey "APPBASE" String
ApplicationName "domain-nunit.tdnet.dll" String
ApplicationNameKey "APP_NAME" String
ApplicationTrust Nothing System.Security.Policy.ApplicationTrust
CachePath "C:\Users\Me\AppData\Local\Temp\TestDrivenShadowCopy\634238699362254101" String
CachePathKey "CACHE_BASE" String
ConfigurationExtension ".config" String
ConfigurationFile "C:\Users\Me\AppData\Local\Temp\tmp7A01.tmp" String
ConfigurationFileInternal "C:\Users\Me\AppData\Local\Temp\tmp7A01.tmp" String
ConfigurationFileKey "APP_CONFIG_FILE" String
DeveloperPath Nothing String
DeveloperPathKey "DEV_PATH" String
DisallowAppBaseProbingKey "DISALLOW_APP_BASE_PROBING" String
DisallowApplicationBaseProbing False Boolean
DisallowBindingRedirects False Boolean
DisallowBindingRedirectsKey "DISALLOW_APP_REDIRECTS" String
DisallowCodeDownload False Boolean
DisallowCodeDownloadKey "CODE_DOWNLOAD_DISABLED" String
DisallowPublisherPolicy False Boolean
DisallowPublisherPolicyKey "DISALLOW_APP" String
DynamicBase Nothing String
DynamicBaseKey "DYNAMIC_BASE" String
HostBindingKey "HOST_CONFIG" String
LicenseFile Nothing String
LoaderOptimization DomainMask {3} System.LoaderOptimization
LoaderOptimizationKey "LOADER_OPTIMIZATION" String
MachineConfigKey "MACHINE_CONFIG" String
PartialTrustVisibleAssemblies Nothing String()
PrivateBinPath Nothing String
PrivateBinPathEnvironmentVariable "RELPATH" String
PrivateBinPathKey "PRIVATE_BINPATH" String
PrivateBinPathProbe Nothing String
PrivateBinPathProbeKey "BINPATH_PROBE_ONLY" String
RuntimeConfigurationFile "config\machine.config" String
SandboxInterop False Boolean
ShadowCopyDirectories Nothing String
ShadowCopyDirectoriesKey "SHADOW_COPY_DIRS" String
ShadowCopyFiles Nothing String
ShadowCopyFilesKey "FORCE_CACHE_INSTALL" String
- значение {длина = 18} строка ()
Теперь я попытался получить эту же информацию из моего проекта Linq2SQL, где он работает нормально, и информация о настройке содержит:
ApplicationBase "C:\Users\Me\Documents\Visual Studio 2008\Projects\LCFVB\LCFVBTests\bin\Release" String
ApplicationName "domain-nunit.tdnet.dll" String
ApplicationTrust Nothing System.Security.Policy.ApplicationTrust
CachePath "C:\Users\Me\AppData\Local\Temp\TestDrivenShadowCopy\634238707809841384" String
ConfigurationFile "C:\Users\Me\AppData\Local\Temp\tmp5E19.tmp" String
DisallowApplicationBaseProbing False Boolean
DisallowBindingRedirects False Boolean
DisallowCodeDownload False Boolean
DisallowPublisherPolicy False Boolean
DynamicBase Nothing String
LicenseFile Nothing String
LoaderOptimization MultiDomainHost {3} System.LoaderOptimization
PrivateBinPath Nothing String
PrivateBinPathProbe Nothing String
SandboxInterop False Boolean
ShadowCopyDirectories Nothing String
ShadowCopyFiles Nothing String
Может ли кто-нибудь увидеть какие-либо различия, которые бы указывали на разницу в том, почему Nunit / тестируемый может читать информацию о моем соединении Linq2SQL в конфигурации, но не для Entity Framework?