2012-08-03 30 views
8

için eklenmiştir. "Entity Framework DbContext" i kullanıyorum. Bu çok garip çünkü web sitemde her zaman towar.dbo hakkında soru soruyorum ama hayır towars.dbo Sorun nerede olduğunu biliyor musunuz? Towar (benim programda elbette farklı bir yerde) hakkındaVarlık Çerçevesi, .dbo

- InnerException {"Invalid object name 'dbo.Towars'."} System.Exception {System.Data.SqlClient.SqlException} 

Benim her şeyin:

public class ProductController : Controller 
{ 
    // 
    // GET: /Product/ 
     public ITowarRepository repository; 

     public ProductController(ITowarRepository productRepository) 
     { 
     repository = productRepository; 
     } 

     public ViewResult List() 
     { 
      return View(repository.Towar); 
     } 

} 


public interface ITowarRepository 
    { 
     IQueryable<Towar> Towar { get; } 
    } 

public DbSet<Towar> Towar { get; set; } 

public class EFTowarRepository : ITowarRepository 
    { 
     public EFDbContext context = new EFDbContext(); 
     public IQueryable<Towar> Towar 
     { 
      get { return context.Towar; } 
     } 
    } 
public class Towar 
    { 
     [Key] 
     public int Id_tow { get; set; } 
     public string Nazwa { get; set; } 
     public string Opis { get; set; } 
     public decimal Cena { get; set; } 
     public int Id_kat { get; set; } 
    } 
+0

db tablo adı nedir @ Bütünlük adına? Doğru db'ye bağlandın mı? veritabanını yapmak – Shyju

+0

bağlantısını doğru RPD

cevap

2

Böyle akıcı API ile DBContext sınıfında OnModelCreating yöntemini geçersiz kılarak masaya Towar eşlemek EF söyleyebilir:

public class EFDbContext : DbContext 
{ 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Towar>().ToTable("Towar"); 
    } 
} 

Şimdi EF Towar tablonun yerine Towars arayacaktır. Bu tabloları oluşturmamışsanız, yaşadığınız başka bir sorun var.

+0

Yardımın için teşekkürler :) Neden bu aptal şeyi Visual Studio'da oluşturduğunu anlamıyorum ama yardımın için çok memnunum. – RPD

+0

@RPD: Rica ederim. memnun olabilirim – Shyju

+0

Baz çağrı gerekiyor ??? base.OnModelCreating (modelBuilder); –

4

EF Kod İlk otomatik tablo adlarını pluralizes. açıkça bir tablo adı varlığı eşleştirmek için bir [Table] niteliğini kullanın: gobally çok pluralization devre dışı bırakmak için bir yol var gibi görünüyor

[Table("Towary")] 
public class Towary 
{ 
    // Whatever properties 
} 

, Entity Framework Code First naming conventions - back to plural table names? bakın.

+0

Hata \t 1 Name = "name" geçerli bir öznitelik argümanı değil. Adlandırılmış öznitelik argümanları, salt okunur, statik olmayan veya const olmayan veya public olan ve statik olmayan read-write özellikleri olan alanlar olmalıdır. \t C: \ Kullanıcılar \ Rafal \ Masaüstü \ MVC ksiązka \ moj projekt \ sklep \ SportsStore \ Varlıklar \ Product.cs SportsStore.Domain – RPD

+0

Üzgünüz, yanlış dokümanları okudum. Sadece "Tablo" ("Sabit")] olmalıdır. –

+0

Zaman ayırdığın için teşekkürler ve yardım – RPD

10

sizin bağlamda aşağıdaki satırı ekleyin:

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
+0

Teşekkürler ama şimdi doğru çalışıyor – RPD

+3

Bu en iyi yol çünkü diğer çözümler sadece bir kez düzeltme. –

2
using System.Data.Entity.ModelConfiguration.Conventions; 

namespace MVCDemo.Models 

    { 
     public class EmployeeContext : DbContext 

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

kırk iki

+0

Cevabınız @Crismogram ile herhangi bir sorun olmadan uzak bir veritabanına bağlanabiliyorum .... Harika bir ... –