1

我以前在我的数据库中创建了一些表,我想将它们映射到一些模型类:

"SISTEMA.Voyages" => public class Voyage
"SISTEMA.Puerto"  => public class Port

我知道在带有实体框架的 ASP.MVC 4 中,这可以通过两种方式之一来完成。但是,对于他们两个,我都遇到了我不知道如何解决的错误。

Voyage.cs 中的第一个:

[Table("SISTEMA.Voyages")]
public class Voyage

或者 Context.cs 中的第二个:

public class ApplicationEntities : DbContext
{
  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    modelBuilder.Entity<Voyage>().ToTable("SISTEMA.Voyages");
  }
}

对于第一个版本,当我以前认为这是自动的时,我得到了这个错误:

The type or namespace name 'Table' could not be found (are you using directive or an assembly reference?)
The type or namespace name 'TableAttribute' could not be found (are you using directive or an assembly reference?)

前一秒我收到了这个我没想到的错误,因为我认为这是一个配置问题,让我很困惑:

The model backing the 'ApplicationEntities' context has changed since the database was created. Consider using Code First Migrations to update the Database.

这段历史甚至记录在哪里?

作为记录,我习惯于通过输入以下内容来处理 Rails 中的此类问题:

class Voyage
    self.table_name = "SISTEMA.Voyages"
end

而且我对 C#/ASP.NET 不是很熟悉。只是发布我接下来一小时要查找的内容,除非有人首先告诉我哪里出错了。

4

2 回答 2

1

对于第一种方式,您缺少 Table 属性的 using 指令,请将其添加到您的类中:

using System.ComponentModel.DataAnnotations;

对于第二种方式,我猜您的模型发生了一些变化,现在它建议使用 Code First 来更新数据库。当您运行应用程序时,它首先访问数据库,它会验证您的模型是否与架构匹配 - 如果不匹配,它会给您这个错误。

我建议查看其中一些链接以获取 EF / Code First / Migrations 入门的帮助 - 它们真的很方便

EF + Code First
使用有效负载处理多对多
如何使用迁移
MSDN EF 站点

于 2013-06-24T19:40:31.797 回答
0

请加:

使用 System.ComponentModel.DataAnnotations.Schema;

于 2015-11-16T08:08:42.540 回答