EF Code First CTP 5 и SQL SErver 2008 R2 - PullRequest
       9

EF Code First CTP 5 и SQL SErver 2008 R2

8 голосов
/ 18 февраля 2011

Не получается заставить EF Code First работать с SQL Server 2008 R2. Я получаю сообщение об ошибке «Неверное имя объекта« dbo.Movies ».»

Таблица не создается автоматически.

Моя строка подключения:

<add name="MovieDBContext" connectionString="Server=(local); Database=Movies; Trusted_Connection=true; Integrated Security=True" providerName="System.Data.SqlClient" />

Моя модель и контекстный класс:

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 голосов
/ 18 февраля 2011

Я забыл, включен ли он по умолчанию, но попробуйте установить его в Application_Start (уверен, что нет)

System.Data.Entity.Database.DbDatabase.SetInitializer<MovieDBContext>(new CreateDatabaseIfNotExists<MovieDBContext>());
1 голос
/ 09 марта 2011

Вот мои текущие настройки (замените заглавные буквы вашими данными):

      <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>

А потом я добавил это в Public TITLEContext ()

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

Взял пару попыток, но поставьте точку останова на одну из ваших нагрузок и проверьте сущности контекста.Должна быть опция просмотра строки подключения к базе данных ...

удачи!

0 голосов
/ 19 февраля 2011
protected override void OnModelCreating(ModelBuilder modelBuilder) {
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

надеюсь, что это поможет

...