sql >> データベース >  >> RDS >> Mysql

EntityFrameworkで接続文字列を設定する方法

    EntityConnectionFactoryを使用する必要があります
    必要なものは次のとおりです。

    public string CreateConnectionString(string BasicConnectionString)
    {
        //EntityConnectionFactory 
        var entityConnectionStringBuilder= new EntityConnectionStringBuilder();
        entityConnectionStringBuilder.Provider = "Your Provicer here"      //For me it is "System.Data.SqlClient";
        entityConnectionStringBuilder.ProviderConnectionString = BasicConnectionString;
        entityConnectionStringBuilder.Metadata = "res://*";
        return entityConnectionStringBuilder.ToString();
    }
    

    これが使用例です

    MyContext ctx = new MyContext(CreateConnectionString())
    

    ::更新::

    DBファースト方式を使用しているため、次の画像を参照してください

    これらの2つのラジオボタンが使用可能になったら、最初のボタンを選択します。その後、モデルの接続文字列を設定できるようになります。

    これが私のコンテキストの様子です(オブジェクトコンテキストですが、この質問のコンテキストでは関係ありません)

    public partial class DataContext : ObjectContext
        {
            #region Constructors
    
            /// <summary>
            /// Initializes a new DataContext object using the connection string found in the 'DataContext' section of the application configuration file.
            /// </summary>
            public DataContext() : base("name=DataContext", "DataContext")
            {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }
    
            /// <summary>
            /// Initialize a new DataContext object.
            /// </summary>
            public DataContext(string connectionString) : base(connectionString, "DataContext")
            {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }
    
            /// <summary>
            /// Initialize a new DataContext object.
            /// </summary>
            public DataContext(EntityConnection connection) : base(connection, "DataContext")
            {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }
    
            #endregion
    
            #region Partial Methods
    
            partial void OnContextCreated();
    
            #endregion
        ...
        }
    

    更新

    自動生成されたエンティティクラスの外部の部分クラスに、探しているコンストラクターを追加します。

    public partial class WMSChennaiDEVEntities : DbContext
    {
        public WMSChennaiDEVEntities(string connectionstring)
                : base(connectionstring)
        {
        }
    }
    

    このコンストラクターはEF5/6に含まれていないため、エンティティ接続文字列が必要なときに誤ってSQL接続文字列を渡すことを防ぐことができます。



    1. MySqlと最後のIDの挿入の問題が残っています

    2. SqlDataReaderのパフォーマンスが遅い

    3. php/mysqlを挿入したばかりの行のIDを取得する方法

    4. 悪い習慣:キーを選択するときにディスクスペースのみに焦点を当てる