EF Code First CTP 5 and SQL SErver 2008 R2

8
我似乎无法让EF Code First与SQL Server 2008 R2一起工作。我收到的错误是“无效的对象名称'dbo.Movies'。”
它没有自动创建表。
我的连接字符串: 我的模型和上下文类:
public class Movie
{
    public int ID { get; set; }

    [Required(ErrorMessage = "Title is required")]
    public string Title { get; set; }

    [Required(ErrorMessage = "Date is required")]
    public DateTime ReleaseDate { get; set; }

    [Required(ErrorMessage = "Genre must be specified")]
    public string Genre { get; set; }

    [Required(ErrorMessage = "Price Required")]
    [Range(1, 100, ErrorMessage = "Price must be between $1 and $100")]
    public decimal Price { get; set; }

    [StringLength(5)]
    public string Rating { get; set; }

}

public class MovieDBContext : DbContext
{
    public DbSet<Movie> Movies { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Movie>().Property(p => p.Price).HasPrecision(18, 2);
    }
}

非常感谢您的帮助。

3个回答

4

我不确定它是否默认启用,但请尝试在Application_Start中设置此项(相当肯定它未启用)

System.Data.Entity.Database.DbDatabase.SetInitializer<MovieDBContext>(new CreateDatabaseIfNotExists<MovieDBContext>());

这并不是在我的Application_Start方法中出现的问题,但似乎这并没有使它工作。 - Cliffboss
检查表是否已经存在,如果已经存在,则需要确保表名匹配。(或删除该表并让 EF 重新构建它),否则我们会发现缺少了一些东西,因为在 Application_Start 中调用以上方法将起作用。 - Buildstarted
我回去重新做了很多我之前跟随的教程 + 做了你建议的,现在它可以工作了。谢谢。 - Cliffboss

1
这是我的当前设置(将大写字母替换为您的详细信息):
      <connectionStrings>
         <add name="TITLEContext" connectionString="metadata=res://*/Models.TITLE.csdl|res://*/Models.TITLE.ssdl|res://*/Models.TITLE.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=DATASOURCE;Initial Catalog=DATABASE;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

然后我在公共TITLEContext()中跟进了这个

DbDatabase.SetInitializer(new DropCreateDatabaseIfModelChanges<TITLEContext>());

尝试了几次,在其中一个加载项上设置断点并检查上下文的实体。它应该有一个选项来查看数据库连接字符串...祝你好运!

0
protected override void OnModelCreating(ModelBuilder modelBuilder) {
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

希望对你有所帮助


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