6

我目前正在使用 EF 5 Code First 编写计费应用程序,并且在运行该应用程序时遇到了错误。

有问题的数据库对象如下:

[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'."}

然而,令我惊讶的是我的数据库实际上已经相应地更新了。这些字段现在在桌面上,但这仍然给我一个错误。

关于这里出了什么问题的任何想法?

编辑:好的,显然有一件事我忘了提:SalesforceID 不是外键。添加的所有列实际上都不是 FK。它们只是普通的字段。

4

3 回答 3

9

简而言之,考虑让您的 [Required] DateTime 字段为 Nullable(DateTime?)。如果您提供有关堆栈跟踪和任何初始化代码的更多信息,那将会很有帮助。

[Required]
public DateTime? ClientStartDate { get; set; }
于 2012-06-12T17:24:45.897 回答
7

就我而言,发生此错误是因为我正在针对我的测试数据库更新我的 EDMX 并针对生产数据库运行我的代码。

于 2012-06-12T16:27:52.230 回答
1

我怀疑是 SalesforceID 导致了问题。尝试删除所有新列并一次添加一个,同时检查错误。如果问题确实与 SalesforceID 有关,可能会解决它。

于 2012-05-09T15:06:15.757 回答