현재 .NET의 일부 데이터베이스 형식을 사용하는 응용 프로그램을 배포하려고합니다. SQL Server Express 또는 SQL Server Express LocalDB를 사용하려고합니다.attachdbfilename 값이 올바르지 않습니다.
데이터베이스에 액세스하기 위해 엔티티 프레임 워크를 사용하고 있습니다.
이제 목표는 손으로 SQL 서버의 모든 변경을 요구하지 않는 배포 버전을 만드는 것입니다. 응용 프로그램을 시작하는 데 필요한만큼 설치 및 설정해야합니다. 모든 개발 컴퓨터에서 잘됩니다. 어떻게 한 번 다른 컴퓨터에 배포하면 문제가 시작됩니다. 나는 대상 시스템에 설치를 손으로 데이터베이스 구조를 요구 사항을 방지하기 위해 LocalDB를 시도했다. 응용 프로그램을 시작하면 연결 문자열에 문제가 있음을 언제까지보고합니다. attachdbfilename이 유효하지 않습니다. 내가 말했듯이이 파일 이름 attachdbfilename=|DataDirectory|\database\Db.mdf
로 설정됩니다. 내 발달에 maschine이 작동합니다. 배포 된 파일을 사용할 때와 IDE에서 실행할 때 모두. 그러나 목표 mashine은 문제를보고합니다. 내 응용 프로그램과 함께 ClickOnce를 사용하여 SQL Server Express 2012 LocalDB를 설치했습니다. 배포 된 파일에는 mdf 파일이 적절한 디렉토리에 있습니다.
전체 연결 문자열은 다음과 같습니다
<connectionStrings>
<add name="DbContainer" connectionString="metadata=res://*/database.DbModel.csdl|res://*/database.DbModel.ssdl|res://*/database.DbModel.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\database\Db.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
내가 인 AttachDBFilename가 유효하지 않은 이유를보고 실패합니다. 대상 컴퓨터에 SQL Server를 설치할 수 있습니다.
은 또한 정상적인 SQL 서버 2012 익스프레스와 함께 pulish하려고 노력했다. 첨부 된 데이터베이스 파일을 사용하지 않고 이것을 사용하고 싶다면 수동으로 필요한 데이터베이스를 만들어야합니다. 그리고 그것은 옵션이 아닙니다. 이 엔티티 프레임 워크에 의해 생성되었다 것처럼Public Partial Class DbContainer
Inherits ObjectContext
Public Sub New()
MyBase.New("name=DbContainer", "DbContainer")
MyBase.ContextOptions.LazyLoadingEnabled = true
OnContextCreated()
End Sub
Public Sub New(ByVal connectionString As String)
MyBase.New(connectionString, "DbContainer")
MyBase.ContextOptions.LazyLoadingEnabled = true
OnContextCreated()
End Sub
Public Sub New(ByVal connection As EntityConnection)
MyBase.New(connection, "DbContainer")
MyBase.ContextOptions.LazyLoadingEnabled = true
OnContextCreated()
End Sub
...
:
나는 이것이 ObjectContext
만들 그러나 이것은뿐만 아니라 좋은 찾고에 문제가 있음을 나타냅니다 몇 가지 질문을 읽어 보시기 바랍니다.
나는이 문제를 해결하는 방법에 대한 아이디어를 밖으로 실행하고 있습니다.