2012-08-03 6 views
8

私が例外を持っている瞬間に "Entity Framework DbContext"を使用していますtowars.dboが見つかりませんでした。私のウェブサイトではいつもtowar.dboについて聞いていますが、towars.dboはないので、これは非常に奇妙です。どこに問題があるのか​​知っていますか?私の.dboにEntity Frameworkが追加されました

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

マイTowarについてのすべてのもの(私のプログラムでは、もちろん別の場所):

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

デシベルであなたのテーブルの名前は何ですか@完全を期すために?あなたは正しいデータベースに接続しましたか? – Shyju

+0

接続するデータベースが正しい RPD

答えて

2

次のような流暢なAPIを使ってDBContextクラスのOnModelCreatingメソッドをオーバーライドして、テーブルTowarにマッピングするためにEFを伝えることができます。

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

今EFはなくTowarsTowarテーブルを探します。これらのテーブルが作成されていない場合は、他にも問題があります。

+0

助けてくれてありがとう:私はなぜ彼らがVisual Studioでこの愚かなものを作成するのか分からないが、私はあなたの助けにとてもうれしいです。 – RPD

+0

@RPD:どうぞよろしくお願いいたします。うれしい私は助けることができる – Shyju

+0

ベースを呼び出す必要が??? 'base.OnModelCreating(modelBuilder);' –

4

EFコードファーストは、自動的にテーブル名をpluralizes。明示的にテーブル名にエンティティをマッピングするために[Table]属性を使用します。goballyあまりにも複数形を無効にする方法がありますように見えます

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

Entity Framework Code First naming conventions - back to plural table names?を参照してください。

+0

エラー '名前'は有効な名前付き属性の引数ではありません。名前付き属性の引数は、読み取り専用ではないフィールド、静的なフィールド、または静的ではなくpublicである読み書き可能なプロパティでなければなりません。 \t C:\ Users \ Rafal \ Desktop \ MVCksiązka\ moj projekt \ sklep \ SportsStore \ Entities \ Product.cs SportsStore.Domain – RPD

+0

申し訳ありませんが、私は間違ったドキュメントを読んでいます。これはちょうど '[Table(" Towary ")]'でなければなりません。 –

+0

あなたの時間と助けてくれてありがとう – RPD

10

は、あなたのコンテキストに次の行を追加します。

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

ありがとうございましたが、現在は正しく動作しています – RPD

+3

これは、他の解決策が1回限りの修正であるため、これが最良の方法です。 –

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

namespace MVCDemo.Models 

    { 
     public class EmployeeContext : DbContext 

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

を四〇から二

+0

あなたの回答で@Crismogram、私は問題なくリモートデータベースに接続することができます....素晴らしいaproach ... –

関連する問題