こんにちは私はDBに自分のデータを保存するのに問題があります。私はEF
と.net core
を使用しています。私は以下のサンプルコードを提供しています:値はnullにはできません。パラメータ名connectionString
ここで実際に何が間違っていますか?私はservices.AddDbContext
をConfigureServices
にMyContextとして提供しました。
public class MyContext: DbContext
{
private IConfigurationRoot _config;
public MyContext(IConfigurationRoot config)
{
this._config = config;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseSqlServer(_config["Data:ConnectionString"]);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
...
}
}
appsettings.json
{
"Data": {
"ConnectionString": "Data Source=MyDataSource;Initial Catalog=MyCatalog;Trusted_Connection=True"},
別のクラス:
public class AnotherClass
{
private MyContext mycontext;
private IConfigurationRoot configurationRoot;
public AnotherClass()
{
var builder = new ConfigurationBuilder();
configurationRoot = builder.Build();
mycontext = new MyContext(configurationRoot);
}
public MyMethod()
{
try
{
//object to be saved using EF
var saveObj = new SaveObj()
{
//pretend to have initialize some object here to save
};
mycontext.SaveObj.Add(saveObj);
mycontext.SaveChanges();
}
catch(Exception e)
{
//Throws an exception. Value cannot be null. Parameter name: connectionString
}
}
}
ありがとうございました。あなたのアプローチを試してみましょう。 – NewbeeNeedsHelp
私のAnotherClassが私の他のクラスによってインスタンス化されています。他のクラスが別のコンストラクタを使用できないため、コンストラクタにMyContextを挿入できません – NewbeeNeedsHelp
唯一のオプションは、インライン 'ConfigurationBuilder'を更新して、関連する設定ソースを直接追加することです。しかしこれはひどい考えです。私は強く*あなたが上から依存性注入システムを試してみることを勧めます。助けが必要な場合は、さらに多くのソースコードを質問に含めてください。または私たちはプライベートチャットに行くことができます... –