Проблема генерации первой схемы кода EF - PullRequest
1 голос
/ 13 мая 2011

Почему это сопоставление (в SQL CE 4.0)

ToTable("USERS");
      HasKey(c => c.Id);
      Property(c => c.Id).HasColumnName("USERS_ID");
      Property(c => c.ActiveDirectoryUsername).HasColumnName("AD_ID");
      Property(c => c.LastUpdated).HasColumnName("LastUpdated").IsOptional();
      Property(c => c.Active).HasColumnName("Active").IsOptional();
      Property(c => c.AccountType).HasColumnName("AccountType").IsOptional();
      HasOptional(c => c.Contact).WithMany().Map(c => c.MapKey("CONTACT_ID"));
      Map<UserCompanyLink>(m => m.Requires("IsCompanyDelegate").HasValue(1));
      Map<UserDirectorLink>(m => m.Requires("IsCompanyDelegate").HasValue(0));

Генерирует эту ошибку

SetUp : System.InvalidOperationException : The database creation succeeded, but the creation of the database objects did not. See inner exception for more details.
  ----> System.Data.SqlServerCe.SqlCeException : A column ID occurred more than once in the specification.

Мне бы очень хотелось увидеть генерируемую схему sql для ее отладки....

edit

Добавив IsCompanyDelegate к базовому объекту UserLink, я теперь получаю

SetUp : System.Data.DataException : An exception occurred while initializing the database. See the InnerException for details.
  ----> System.Data.EntityCommandCompilationException : An error occurred while preparing the command definition. See the inner exception for details.
  ----> System.Data.MappingException : 
(69,10) : error 3023: Problem in mapping fragments starting at lines 69, 79, 88, 172:Column UserLink.IsCompanyDelegate has no default value and is not nullable. A column value is required to store entity data.
An Entity with Key (PK) will not round-trip when:
  ((PK is NOT in 'UserLinks' EntitySet OR Entity is type [eServices.Admin.Data.Contexts.UserLink]) AND (PK is in 'UserLinks' EntitySet OR PK plays Role 'UserLink_Contact_Source' in AssociationSet 'UserLink_Contact'))

Совершенно загадочный гоблдигок.

Почему картирование ТРГ так чертовски сложно.весь смысл кода в первую очередь заключается в том, чтобы иметь возможность создать модель по своему усмотрению?

edit

, поэтому она появляется без существующей базы данных, мы получаем первоеошибка (т. е. первый тестовый запуск), поэтому вторая ошибка предположительно не имеет значения.

1 Ответ

0 голосов
/ 13 мая 2011

Оказывается, это была случайная ошибка, не связанная с этим конкретным отношением.

Я изменил соединение с SQL Server CE на SQL Server 2008, и мне было выдано гораздо более полезное сообщение об ошибке.На этот раз он сказал мне, какой идентификатор столбца и в какой таблице.

Мораль истории: если вы используете SQL Server CE, попробуйте его более крупного брата, возможно, вам повезет больше.

...