サーバーにウェブサイトをアップロードするために接続文字列を編集しようとしています。
私はこれを実際に経験していません。この例外が発生しました:キーワードがサポートされていません: 'サーバー'。
これが私の接続文字列です。
<add name="AlBayanEntities" connectionString="Server=xx.xx.xxx.xxx,xxxx;Database=AlBayan;Uid=bayan;Password=xxxxx;" providerName="System.Data.EntityClient" />
この文字列をローカルでうまく機能する古い接続文字列に埋め込もうとしましたが、うまくいきませんでした:S
Entity Framework(データベースファーストまたはモデルファースト、物理的なEDMXモデルファイルがある場合)では、他の誰もがこれまで述べてきた単純なADO.NET接続文字列とはまったく異なる特別なタイプの接続文字列を使用する必要があります。 ..
接続文字列は次のようになります。
<add name="testEntities"
connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=(local);initial catalog=test;integrated security=True;multipleactiveresultsets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
この接続文字列の中に、基本的にADO.NET接続文字列であるprovider connection string=
属性があります。
provider connection string="data source=(local);initial catalog=test;integrated security=True;multipleactiveresultsets=True;App=EntityFramework""
したがって、ここでは、サーバー名と、場合によっては他の設定を変更する必要があります。
data source=....
はサーバーを表します(server=.....
も使用できます)initial catalog=.....
はデータベースを表します(database=....
も使用できます)MVC5を使用EntityFramework 6.xxおよびCode First Approachを使用
私は同じ問題を抱えていて、providerName
を変更することでこれを解決しました
から
providerName="System.Data.EntityClient"
に
providerName="System.Data.SqlClient"
私は常に接続ウィザードを実行して文字列を作成するか、 connectionstrings.com を使用します。
SQL Serverを想定:
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
あなたのものと比較すると、それは非常に異なります。
Server=xx.xx.xxx.xxx,xxxx;Database=AlBayan;Uid=bayan;Password=xxxxx;
この例外は、接続文字列をApp Service自体(「アプリケーション設定」ブレード上)に保存すると、Azure Webサイトでスローされます。
接続文字列がEntity Framework接続文字列の場合、引用符はweb.configファイルでデフォルトで"
としてエンコードされます。
接続文字列を適切に解析できるように、これらを実際の引用符に戻す必要があります。
これを試して
<add name="AlBayanEntities" connectionString="Data Source=xx.xx.xxx.xxx,xxxx;Initial Catalog=AlBayan;User Id=bayan;Password=1abcd;" providerName="System.Data.EntityClient" />
Rider IDEを.netコア2.2プロジェクトに使用した場合も同様です。Riderは、Startup.csの "ConfigureServices"メソッドでSqliteを自動的に設定するためです。
変えることによって
services.AddDbContext<ApplicationDbContext>(options =>
options.**UseSqlite**(
Configuration.GetConnectionString("DefaultConnection")));
に
services.AddDbContext<ApplicationDbContext>(options =>
options.**UseSqlServer**(
Configuration.GetConnectionString("DefaultConnection")));
問題は解決されました。もちろん、最初にEF SQLServerのnugetパッケージをインストールし、接続文字列をappsettings.jsonに追加する必要があります。
私の場合、プロジェクトにEFSQLLite nugetパッケージがインストールされていることがわかりました。これはServer=
キーワードを認識しないようです。そのnugetをアンインストールして、EFSQLSERVERの完全なものをインストールしました。
EntityConnectionStringBuilder bb = new EntityConnectionStringBuilder();
bb.Metadata = "res://*/dao.bdmi.csdl|res://*/dao.bdmi.ssdl|res://*/dao.bdmi.msl";
//same as below client tobe used
bb.Provider = "MySql.Data.MySqlClient";
MySql.Data.MySqlClient.MySqlConnectionStringBuilder mbb = new MySql.Data.MySqlClient.MySqlConnectionStringBuilder();
mbb.Server = "";
mbb.Database = "";
mbb.UserID = "";
mbb.Password = "";
mbb.PersistSecurityInfo = true;
//use providerconnectionstring insted of connectionstring
bb.ProviderConnectionString = mbb.ToString();
return bb.ToString();
このようにして、必要に応じてConnectionString
を変更できます。