Я прочитал некоторые учебники с рамкой сущности 6 ...DbContext -> DbSet -> Где пункт отсутствует (Entity Framework 6)
Основы легки.
using (var context = new MyContext())
{
User u = context.Users.Find(1);
}
Но как использовать «Где» или что-то еще на «DbSet» с пользователями?
public class MyContext : DbContext
{
public MyContext()
: base("name=MyContext")
{
//this.Database.Log = Console.Write;
}
public virtual DbSet<User> Users { get; set; }
}
Пользователи
[Table("User")]
public class User : Base
{
public Guid Id { get; set; }
[StringLength(100)]
public string Username { get; set; }
}
И вот проблема, которая не работает.
string username = "Test";
using (var context = new MyContext())
{
User u = from user in context.Users where user.Username == username select user;
}
Ошибка: Там не было реализации шаблона запроса для исходного типа «DbSet». «Где» не найдено. Возможно, отсутствует ссылка или использование директивы для «System.Link».
Если я пытаюсь автозаполнять методы, их нет.
Почему оно не работает? :(
// Edit: Добавление System.Linq в верхней части файла изменяет функции задачи выше, так что я нету проблемы больше
Но почему where
неправильно в настоящее время
The type "System.Linq.IQueryable<User>" cant converted into "User" explicit. There already exists an explicit conversion. (Possibly a cast is missing)
- ссылка System.Linq, добавленная в пространство имен? – Sefa
Это 'System.Linq', а не' System.Link', и вам нужно включить его с другими «использующими» директивами в верхней части файла. –
Wtf !? Добавление «using System.Linq» в верхней части файла, где я использую строку выше исправленной проблемы ... Забавная вещь ... Можете ли вы перепроверить вопрос. Я добавил, что проблема связана с System.Linq. Благодаря!! – PatrickB