#c# #asp.net-web-api2
#c# #asp.net-web-api2
Вопрос:
Итак, у меня есть две таблицы в моей БД: engineer и engineerSettings. В настоящее время у меня есть контроллер как для api / username, так и для api / UserSettings, но я также хочу иметь контроллер api / UserInformation, который возвращает все в username, а также UserSettings. Я не совсем уверен, как это сделать, но прямо сейчас у меня есть новая модель для пользовательской информации
public class userInformation
{
public virtual ICollection<Username> Usernames {get;set;}
punlic virtual ICollection<UserSetting> UserSettings {get;set;}
}
И в моем контроллере UserInformation у меня есть
....
//GET
public IEnumerable<UserInformation> GetUserInformation()
{
return db.UserInformations;
}
Что на самом деле не работает, поэтому мне было интересно, как решить эту проблему?
Комментарии:
1. Что не работает?
2. Я получаю тип объекта UserInformation не является частью модели для текущей контекстной ошибки, и я попытался добавить
modelBuilder.Entity<UserInformation>().ToTable("UserInformation")
в свой dbcontext, но все равно получаю ту же ошибку.3. Посмотрите в своем классе контекста. Он должен быть определен для его использования.
4. Да, я уже определил это,
public virtual DbSet<UserSetting> UserSettings { get; set; }
5. FWIW, Visual Studio (если это то, что вы используете) предлагает несколько простых методов устранения неполадок в вашем коде. Они были очень полезны в поиске решений вопросов, не найденных в SO. Первый включает в себя щелчок правой кнопкой мыши в крайнем левом углу строки кода для метода, который не работает, и запуск его в локальной отладке, ваш VS должен быть настроен для символов. Второй метод включает в себя создание . ТЕСТИРУЕТ проект, ссылаясь на ваш основной проект и добавляя методы как [TestMethod], иногда вы получаете гораздо более подробную информацию об ошибках, чем в вашем browser. HTH.
Ответ №1:
Заполните свою модель:
public UserInformation GetUserInformation()
{
UserInformation UserInfo= new UserInformation();
List<Username> lstUsername= new List<Username>();
List<UserSetting> lstUserSetting= new List<UserSetting>();
lstUserSetting=db.UserSettings.ToList();
lstUsername=db.Usernames.ToList();
UserInfo.Usernames =lstUsername;
UserInfo.UserSettings =lstUserSetting;
return UserInfo;
}
Комментарии:
1. Да. Спасибо! Я знал, что это не так просто, как я думал. 🙂
2. Как бы я сказал, если имена пользователей и пользовательские настройки имеют общий «идентификатор», как мне вернуть только имена пользователей и пользовательские настройки этого идентификатора?
3. для выбора одного пользователя с идентификатором пользователя
db.Usernames.Where(m => m.ID == userID).FirstOrDefault();