实体框架 5 无效列名错误

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不是外键。添加的列都不是外键,它们只是普通字段。


你最终解决了这个问题吗? - Nick
我已经做了,谢谢你提醒我发布更新。 - Corey Adler
我需要答案!!@IronMan84 - Aditi
@Aditi 请查看标记的答案。 - Corey Adler
3个回答

9
简而言之,考虑将您的[Required] DateTime字段设为可空(DateTime?)。如果您提供有关堆栈跟踪和任何初始化代码的更多信息,将会很有帮助。
[Required]
public DateTime? ClientStartDate { get; set; }

你能提供任何解释吗?这似乎是一个奇怪的解决方案! - noelicus

7
在我的情况下,出现这个错误是因为我正在将EDMX更新到我的测试数据库,并在生产数据库上运行代码。

1

我怀疑问题出在SalesforceID上。尝试先移除所有新列,然后逐个添加并检查错误。如果问题确实与SalesforceID有关,this 可能会解决它。


不过这不是一个外键。我已经尝试了逐个测试,但仍然失败。 - Corey Adler
嗯... 还有一些其他需要注意的事情。问题是否仅限于此类?带有修改表名的数据注释的类?您能否创建一个相同的类但更改名称并查看是否仍然出现错误?使用非 beta 版本的 EF? - Jon Crowell
我有其他使用相同注释的类可以工作。我切换回 EF 4.3 ,但仍然没有任何变化。 - Corey Adler
不确定你还应该尝试什么。希望有人能回答。 - Jon Crowell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接