2017-06-14 13 views
1

私は多くの投稿を検索しようとしましたが、解決策は得られませんでした。 Entity Frameworkの問題私の接続文字列の名前は、データベースに用意されているテーブル名と同じにする必要があります

接続文字列の名前は、DBで指定されたテーブル名と同じにする必要がありますか?

テーブル名として接続文字列名を指定したときにエラーが見つかりませんでしたが、接続文字列名としてDBContextを渡したときにこの例外が発生しました。

public class Product 
    { 
     public int id { get; set; } 
     public string Name { get; set; } 
     public int Quantity { get; set; } 
     public DateTime EntryDate { get; set; } 
    } 

ProductContext

public class ProductContext: System.Data.Entity.DbContext 
    { 
     public DbSet<Product> Products { get; set; } 
     public ProductContext() : base("ProductContext") { } 
    } 

コントローラー:

public class ProductController : Controller 
    { 
     ProductContext db = new ProductContext(); 
     // GET: Product 
     public ActionResult Index() 
     { 
      var product = db.Products.ToList(); 
      return View(product); 
     } 

は、web.configファイル:

ここ

An exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll but was not handled in user code 

Additional information: The connection string 'ProductContext' in the application's configuration file does not contain the required providerName attribute." 

はコード モデルの私の作品です

<connectionStrings> 
    <add name="ProductContext" connectionString="Data Source=SHUTTHEFCUKUP;Initial Catalog=EntityFrameWork;Integrated Security=True;providerName=System.Data.EntityClient" /> 
    </connectionStrings> 

DBテーブル:

select * from Product 
columns: 
id, 
name, 
quantity, 
date_entry 

私は何かが欠けて新しいエンティティframework.I'mだと誰も私を助けることができます。

+0

https://stackoverflow.com/questions/20277677/dynamic-mysql-database-connection-for-entity-framework-6 – scaisEdge

+1

本当にMySQLを使用していますか?あなたの接続文字列はSQL Serverのように見えます –

+0

私はSqlサーバーを使用しています –

答えて

0

接続文字列にコンテキスト名の後に名前が付けられると、自動的にそのコンテキストに使用されます。この場合、providerName属性が設定されているため、Entity Frameworkは使用するデータベース接続プロバイダーを認識します。

また、Web.configファイルに、Entity Frameworkと同じ名前のプロバイダを設定する必要があります。これは、データベース用に使用しているコネクタに依存し、そのドキュメントに記載する必要があります。

この場合、providerName="System.Data.EntityClient"を文字列に追加するだけで十分です。

+0

私はproviderNameを追加しましたが、例外が発生しています –

+0

@VijayVj統合認証はMySQLで動作しません... – ebyrob

+0

これはmySqlではないのですか? –

1

変更接続文字列以下に示すように、

<connectionStrings> 
    <add 
     name="ProductContext" 
     connectionString="Data Source=SHUTTHEFCUKUP;Initial Catalog=EntityFrameWork;Integrated Security=True;" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

providerNameは、connectionStringの一部ではない、addノード内の属性です。

関連する問題