2011-02-18 29 views
8

Tôi dường như không thể lấy Mã EF Đầu tiên để làm việc với SQL Server 2008 R2. Lỗi tôi nhận được là "Tên đối tượng không hợp lệ 'dbo.Movies'."Mã EF Đầu tiên CTP 5 và SQL SErver 2008 R2

Nó không tự động tạo bảng.

chuỗi kết nối của tôi:

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

mô hình và bối cảnh của tôi lớp:

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); 
    } 
} 

Bất kỳ trợ giúp sẽ được nhiều đánh giá cao.

Trả lời

4

tôi quên nếu nó được kích hoạt theo mặc định nhưng cố gắng thiết lập này trong Application_Start (khá chắc chắn nó không phải)

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

Đó không phải là trong phương pháp Application_Start của tôi, nhưng dường như nó không hoạt động. – Cliffboss

+0

Kiểm tra xem bảng đã tồn tại chưa và nếu nó đã tồn tại thì bạn cần đảm bảo rằng tên bảng khớp với nhau. (Hoặc xóa bảng và để EF xây dựng nó cho bạn) nếu không chúng tôi đang thiếu một cái gì đó như phương pháp trên, khi được gọi trong Application_Start sẽ hoạt động. – Buildstarted

+0

Tôi quay lại và làm lại rất nhiều hướng dẫn mà tôi đã theo dõi + đã làm những gì bạn đề xuất và giờ đây nó hoạt động. Chúc mừng. – Cliffboss

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

bạn hy vọng nó sẽ giúp

+0

Điều này không làm cho nó hoạt động héo. – Cliffboss

1

Heres thiết lập hiện tại của tôi (thay thế mũ với bạn chi tiết):

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

Và sau đó tôi tiếp tục với điều này trong công chúng TI TLEContext()

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

Mất vài lần, nhưng đặt điểm ngắt trên một trong các tải của bạn và kiểm tra các thực thể của ngữ cảnh. Nó sẽ có một optiont o xem chuỗi kết nối cơ sở dữ liệu ...

chúc may mắn!

Các vấn đề liên quan