2012-05-09 4 views
5

В настоящее время я пишу приложение для выставления счетов, используя EF 5 Code Во-первых, и я запускаю ошибку при запуске приложения.Entity Framework 5 Неверная ошибка имени столбца

Объект базы данных в вопросе выглядит следующим образом:

[Table("Client")] 
public class ClientBase 
{ 
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int ClientID { get; set; } 

    [Required] 
    public string ClientName { get; set; } 

    [Required] 
    public bool IsActive { get; set; } 

    [Required] 
    public string ClientContactName { get; set; } 

    [Required] 
    public string ClientContactEmail { get; set; } 

    [Required] 
    public DateTime ClientStartDate { get; set; } 

    [Required] 
    public string SalesforceID { get; set; } 

    public DateTime TerminatedDate { get; set; } 

    public string ClientStreet { get; set; } 

    public string ClientCity { get; set; } 

    public string ClientState { get; set; } 

    public int? ClientZipCode { get; set; } 

    public virtual List<PropertyBase> Properties { get; set; } 

    public virtual List<ClientCharge> ClientDefaultCharges { get; set; } 

} 

Недавно я добавил кучу этих полей (от ClientStartDate до ClientZipCode все новое), и всякий раз, когда я запустить приложение, я получаю следующее сообщение об ошибке :

{"Invalid column name 'ClientStartDate'.\r\nInvalid column name 'SalesforceID'.\r\nInvalid column name 'TerminatedDate'.\r\nInvalid column name 'ClientStreet'.\r\nInvalid column name 'ClientCity'.\r\nInvalid column name 'ClientState'.\r\nInvalid column name 'ClientZipCode'."} 

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

Любые идеи о том, что здесь происходит неправильно?

EDIT: Хорошо, я, видимо, забыл упомянуть: SalesforceID НЕ является внешним ключом. Ни один из столбцов, которые были добавлены, фактически были FK. Это просто поля.

+0

Вы в конечном итоге выяснили это? –

+0

я, фактически. Спасибо, что напомнили мне о публикации обновления. – IronMan84

+0

Мне нужен ответ !! @ IronMan84 – Aditi

ответ

9

Короче говоря, подумайте о создании полей [Обязательные] DateTime Nullable (DateTime?). Если вы предоставите дополнительную информацию о стеке и любом коде инициализации, это будет полезно.

[Required] 
public DateTime? ClientStartDate { get; set; } 
+0

Можете ли вы предложить какие-либо объяснения? Кажется странным, что это решение! – noelicus

1

Мое подозрение, что SalesforceID вызывает проблему. Попробуйте удалить все новые столбцы и добавить их по одному за раз, проверяя на наличие ошибок. Если проблема действительно связана с SalesforceID, this может решить эту проблему.

+0

Это не FK. И я пробовал его по одному, и все равно все не получается. – IronMan84

+0

Хм ... Вот еще кое-что, на что можно обратить внимание. Проблема ограничена только этим классом? Классы с аннотациями данных, изменяющими имя таблицы? Можете ли вы создать идентичный класс, но изменить имя и посмотреть, все ли вы получили ошибку? Использовать не бета-версию EF? –

+0

У меня есть другие классы с теми же аннотациями, которые работают. И я вернулся к EF 4.3. Еще ничего. – IronMan84

6

В моем случае эта ошибка произошла из-за того, что я обновлял свой EDMX по моей тестовой базе данных и запускал свой код против производственной базы данных.

Смежные вопросы