静的クラスを呼び出してデータベースから情報を取得するLayoutがありますが、プロジェクトをエンティティフレームワークコアに移行していますが、 EFコアのインスタンスパラメータをインスタンス化して、静的クラスを非静的に変更しましたが、静的シグネチャを持つレイアウトからそのクラスを呼び出して、必要なレイアウトから呼び出すことができますそのインスタンスパラメータを渡すために、私はそれを取得するレイアウトでクラスを作成する必要がありますか?私はそれをするとは思わない..私は何ができますか?どんな提案も大歓迎です。レイアウトビューからEFコアを使用したコールクラス
これはクラスです(インスタンスコンストラクタを使用するためにインスタンスクラスに変更しましたが、インスタンスパラメータとしてインスタンスクラスとして呼び出すために、レイアウトビューからシグネチャを変更する必要があります... ):
public class LocationLookup
{
DataContext context;
public LocationLookup(IOptions<DBConnection> connectionsAccessor)
{
context = new DataContext(connectionsAccessor);
}
public static List<MyLocations> GetLocations()
{
var locations = context.MyLocations.OrderBy(x => x.Name).ToList();
return locations;
}
}
そして、これは私は現在メソッドを呼び出して(私はインスタンスクラスとしてそれを呼び出すことが、どのように私はconnectionsAccessor
インスタンスパラメータを取得することができ、これを変更する必要がありますよどのように私はLayout.cshtml
ビューにいるのですか? )
@{
var locations = LocationLookup.GetLocations();
}
任意より良いアプローチの提案は歓迎です
コントローラの操作があるとします。することはできませんそれはコントローラ内にあり、ViewBag.Locationsを設定しますか? – AntDC
必ず '静的なDataContext'を削除してください:コンテキストは常にインスタンスであり、すべてのリクエストに対してDIエンジンによって作成されるべきです。 –
@AntDC私はそれについても考えていますが、それがより良いアプローチであるかどうかはわかりません。その場合、起動時にそのコントローラーアクションを呼び出してそこにViewBag.Locationsを作成する必要があります – AlexGH