2011-02-18 14 views
8

मुझे एसक्यूएल सर्वर 2008 आर 2 के साथ काम करने के लिए पहले ईएफ कोड प्राप्त नहीं हो रहा है। मुझे जो त्रुटि मिल रही है वह है "अवैध ऑब्जेक्ट नाम 'dbo.Movies'।"ईएफ कोड प्रथम सीटीपी 5 और एसक्यूएल सेवर 2008 आर 2

यह स्वचालित रूप से तालिका नहीं बना रहा है।

मेरे कनेक्शन स्ट्रिंग:

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

किसी भी मदद की बहुत सराहना की जाएगी।

उत्तर

4

अगर यह डिफ़ॉल्ट रूप से सक्षम है, लेकिन में यह निर्धारित करने का प्रयास किया है तो मुझे भूल जाओ अपने Application_Start (यकीन है कि यह नहीं है)

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

यह मेरे अनुप्रयोग_स्टार्ट विधि में नहीं था, लेकिन ऐसा लगता है कि यह काम नहीं करता है। – Cliffboss

+0

यह देखने के लिए जांचें कि तालिका पहले से मौजूद है और यदि यह पहले से मौजूद है तो आपको यह सुनिश्चित करना होगा कि तालिका के नाम मेल खाते हैं। (या तालिका को हटाएं और ईएफ को इसे आपके लिए बनाएं) अन्यथा हम उपरोक्त विधि के रूप में कुछ खो रहे हैं, जब Application_Start में कॉल किया जाएगा। – Buildstarted

+0

मैं वापस चला गया और मैंने जो भी ट्यूटोरियल किया, उसे फिर से चलाया + आपने जो सुझाव दिया और अब यह काम करता है। चीयर्स। – Cliffboss

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

आशा है कि यह

+0

इसने इसे काम नहीं किया। – 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> 

और फिर मैंने सार्वजनिक टीआई में इसका पालन किया TLEContext()

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

लिया एक जोड़े की कोशिश करता है, लेकिन अपने भार में से एक पर एक को तोड़ने बिंदु डाल दिया और संदर्भ की संस्थाओं की जाँच करें। यह डेटाबेस विकल्प स्ट्रिंग देखने के लिए एक विकल्प होना चाहिए ...

शुभकामनाएं!

संबंधित मुद्दे