오늘 이전 응용 프로그램을 EF 4.2에서 EF 4.3.1로 마이그레이션했습니다. 내 응용 프로그램에서 CodeFirst를 사용했지만 마이그레이션 후 작동이 멈췄으며 그 이유를 찾을 수 없습니다. 다른 가능한 문제를 지우려면 내가 작은 콘솔 응용 프로그램을 만들기로 결정하고 난 ADO 팀에 의해 발표 된 데이터 마이그레이션을 통해 워크 사용 :Entity Framework 4.3.1 코드 첫 번째 : 데이터베이스가 생성되었지만 테이블이 없습니다.
http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx
내가 블로그 정확하게 코드를 복사, 대신 제대로 작동합니다 (DB를 생성, 스키마를 만들고, 블로그를 삽입)의 나는 몇 가지 오류 얻을 : 오직 DB가 생성됩니다
- ,하지만 테이블 난이 오류를 얻을
- 을
Conversion failed when converting datetime from character string.
"
모든 내용은 SQL Server 2005 Express에 있습니다.
나는 같은 사용하여 SQL 컴팩트하지만 동일한 결과 (다른 오류 THO) 시도 : 단지 DB (이 경우 bin 폴더에있는 SDF 파일)을 생성- ,하지만 테이블을
INSERT INTO [__MigrationHistory] ([MigrationId], [CreatedOn], [Model], [ProductVersion])
VALUES ('201204191321184_init', '2012-04-19T13.21.04.364', ...., '4.3.1');
:
The format of the specified date or time datepart is not valid. [ String = 2012-04-19T13.21.04.364 ]
내가 문제가 EF 먼저 마이그레이션으로 입력하고자하는 라인에있다 두 경우 모두 생각하는 오류
분명히. 잘못된 것입니다. 적어도 로케일에서는 다음과 같아야합니다.
이 버그는 무엇입니까? 그것은 항상 다른 datetime과 함께 작업했습니다.
UPDATE 내가 명시 적으로 마이그레이션로 실행하고 -verbose 플래그가 설정 마이그레이션을 적용하고, 여기에 내가 무엇을 얻을 시도 : 나는 SQL Server를 설치 한 2
PM> Update-Database -Verbose
Using NuGet project 'ConsoleApplication2'.
Using StartUp project 'ConsoleApplication2'.
Target database is: '|DataDirectory|ConsoleApplication2.ConsoleApplication1.BlogContext.sdf' (DataSource: |DataDirectory|ConsoleApplication2.ConsoleApplication1.BlogContext.sdf, Provider: System.Data.SqlServerCe.4.0, Origin: Convention).
Applying explicit migrations: [201204191356197_Initial].
Applying explicit migration: 201204191356197_Initial.
CREATE TABLE [Blogs] (
[BlogId] [int] NOT NULL IDENTITY,
[Name] [nvarchar](4000),
CONSTRAINT [PK_Blogs] PRIMARY KEY ([BlogId])
)
CREATE TABLE [__MigrationHistory] (
[MigrationId] [nvarchar](255) NOT NULL,
[CreatedOn] [datetime] NOT NULL,
[Model] [image] NOT NULL,
[ProductVersion] [nvarchar](32) NOT NULL,
CONSTRAINT [PK___MigrationHistory] PRIMARY KEY ([MigrationId])
)
[Inserting migration history record]
System.Data.SqlServerCe.SqlCeException (0x80004005): The format of the specified date or time datepart is not valid. [ String = 2012-04-19T13.56.45.437 ]
at System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32 hr)
at System.Data.SqlServerCe.SqlCeCommand.ExecuteCommandText(IntPtr& pCursor, Boolean& isBaseTableCursor)
at System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand(CommandBehavior behavior, String method, ResultSetOptions options)
at System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery()
at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement)
at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements)
at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable`1 operations, Boolean downgrading)
at System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
The format of the specified date or time datepart is not valid. [ String = 2012-04-19T13.56.45.437 ]
업데이트 프로파일 러 (Profiler)를 사용하고 거기에서 일어나는 일을 프로파일 링합니다. 쿼리 분석기를 통해 모든 문을 하나씩 실행했지만 실패한 문은 위에서 설명한대로 마이그레이션 삽입입니다.
INSERT INTO [__MigrationHistory] ([MigrationId], [CreatedOn], [Model], [ProductVersion]) VALUES ('201204231416585_InitialCreate', '2012-04-23T14.16.59.038Z', ...., '4.3.1')
2012-04-23T14:16:59.038Z
에 2012-04-23T14.16.59.038Z
에서 datatime 문자열의 형식을 변경
안녕 시몬의 올바른 문화를 지정하여 그것을 해결, 무엇이입니다 db 머신의 로케일과 데이터베이스의 데이터 정렬? 이상하게도 T-SQL은 –
DB 컴퓨터 (내 컴퓨터)가 IT 일뿐, DB의 데이터 정렬은 프랑스어입니다. SQL Express에서 설명 할 수도 있습니다 (2012-04-19T13.21.04.364가 불변의 포맷). 그러나 SQL Compact는 문제가되어서는 안되는 앱 컨텍스트에서 실행됩니다. – CodeClimber
@CodeClimber http://stackoverflow.com/a/9745125/417747 -이 링크가 도움이되는지 확인하십시오. 유사한 문제에 관한 제 1 기 게시물, 그 대부분이 마이그레이션과 관련된 내 경험에 따르면, 이니셜 라이저 및 연결 문자열) - 알려 주시면보다 철저한 답변을 게시하겠습니다. – NSGaga