У меня есть класс под названием AppSettings, где хранятся некоторые настройки моего приложения. До сих пор я использовал только списки в моем DbContext какХранить отдельный экземпляр в DbContext с ASP.NET MVC 5 CF EF (нет списка)
public class MyDbContext: DbContext {
public DbSet<User> Users { get; get; }
}
Но для настройки, мне нужно нет списка. Я хочу только сохранить один экземпляр класса AppSettings. Я попытался установить его в качестве обычного члена
public class AppSettingsContext: DbContext {
public AppSettings AppSetting { get; get; }
}
Но это не работает: EF сгенерирует исключение, что тип объекта AppSettings не является частью модели для текущего контекста. Код:
using(var db = new AppSettingsContext()) {
var setting = new AppSettings() {
AttributeA = "Test",
//...
};
db.Entry(setting).State = EntityState.Added;
db.SaveChanges();
}
Можно ли это сделать с помощью EF? Или я вынужден самостоятельно реализовать эту логику, используя атрибут не сопоставленный, где я уверен, что только один экземпляр хранится и возвращается базой данных?
Почему бы не использовать 'DbSet'? Вы уже используете базу данных, которая поддерживает таблицы с несколькими строками, также может использовать коллекцию на C#. – mason
Я хочу сгруппировать свои настройки, что приводит к различным моделям: UserSettings, RegistrationSettings и т. Д. С DbSet у меня есть список каждого класса настроек. Это требует от меня использования индекса, проверьте, существует ли индекс и т. Д. Я бы хотел, чтобы один параметр имел доступ как «new AppSettingsContext(). RegistrationSettings.IsEnabled' – Lion
Зачем использовать базу данных? Похоже, что вы будете делать с web.config. Во-вторых: почему бы просто не использовать DbSet, а затем сохранить внутри статического класса идентификаторы параметров, чтобы вы могли просто сделать что-то вроде. DbContext.Settings.FirstAsync (s => s.id == MyStaticClass.UserSettigns) Вы даже можете создать метод расширения, чтобы сделать его еще более удобочитаемым. Long sory short, no вы не можете хранить одиночные значения, это БД, это не то, как они работают –