Open TokugawaTakeshi opened 2 years ago
複数個所で利用する場合は、シングルトンパターンを利用すると良いです。
public class LocalDataBaseContext : DbContext
{
public static DbSet<PersonModel> PeopleModels { get; internal set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
string stringifiedConnectionData = new SqliteConnectionStringBuilder { DataSource = "c:\\tool\\db.sqlite3"}.ToString();
optionsBuilder.UseSqlite(new SqliteConnection(stringifiedConnectionData));
}
public static DbSet<PersonModel> GetInstance() => PeopleModels;
}
void usage() {
var_dataBaseContext = LocalDataBaseContext.GetInstance();
}
@gummoni
ありがとう。将来に別の実態もどんどん追加されますから、下記の様に実装しました。
public class LocalDataBaseContext : DbContext
{
private static LocalDataBaseContext _selfSoleInstance;
public DbSet<PersonModel> PeopleModels { get; internal set; }
public static LocalDataBaseContext GetInstance()
{
return _selfSoleInstance ?? (_selfSoleInstance = new LocalDataBaseContext());
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
string stringifiedConnectionData = new SqliteConnectionStringBuilder { DataSource = "c:\\tool\\db.sqlite3" }.ToString();
optionsBuilder.UseSqlite(new SqliteConnection(stringifiedConnectionData));
}
}
先ずは他の問題も処理してから動かしてみましょう。
PersonLocalEF_SQLiteGateway
の中に下記の様にLocalDataBaseContext
を使ってみました。複数のゲートウェイだったら、何回も
LocalDataBaseContext
を作る事になりますね。 もしこれを避けた方が良いとしたら、LocalDataBaseContext
の注射方法を考えます。西野さんの説明を待っています。