Entity Framework Code First, получить объект через ключ

197
06 февраля 2018, 06:32

Есть проект на C#, использующий Entity Framework Code First

public class DatabaseContext : DbContext
{    
    public DatabaseContext() : base("name=DatabaseContext")
    {
        Database.SetInitializer<DatabaseContext>(new DropCreateDatabaseIfModelChanges<DatabaseContext>());
        Database.CreateIfNotExists();
    }
    public void Init(){}
    //Множество объектов
    public DbSet<Project> Projects { get; set; }
}

Как видно, EntityFramework хранит некое множество объектов Projects. В объекте Project есть поле Items, которое представляет из себя коллекцию

public class Project
{
    public Project(){}
    [Key]
    public int Id{ get;set;}
    //Коллекция
    ObservableCollection<Item> items = new ObservableCollection<Item>();
    public ObservableCollection<Item> Items
    {
        get
        {
            return items;
        }
        set
        {
            items = value;
        }
    }
}

Диаграмма базы данных, созданной Entity Framework выглядит так:

Через SQL получить строку из таблицы Item, зная Id, просто элементарно.

Select * FROM dbo.Items where Id=1

Вопрос: А как тоже самое сделать используя средства Entity Framework, не подгружая в программу все коллекции Items из проектов?

Answer 1

Добавьте в проект

public DbSet<Item> Items { get; set; }

Тогда вам останется только воспользоваться методом Find:

var item = context.Items.Find(id);
Answer 2

Используйте LINQ.

Как вариант:

int id = 1;
var item = items.Where(t => t.Id==id).First();

Или:

int id = 1;
var item = items.First(t => t.Id==id);
READ ALSO
Unity IAP Win10

Unity IAP Win10

Собираем билд в Юнити под Win10 Universal, backend выбираемnet

164
Ошибка в кодировке русских символов

Ошибка в кодировке русских символов

ЗдравствуйтеСоздал пустое asp

149
Загрузка Hex файла в микроконтроллер

Загрузка Hex файла в микроконтроллер

Работаю с опытным образцом микроконтроллера, поэтому программами типа Flash- magic заливать не получаетсяФирма- создатель прислала кривую- косую...

183
Как сделать архив из множества файлов? C#

Как сделать архив из множества файлов? C#

ЗдравствуйтеЯ хочу узнать, как можно заархивировать множество файлов, но я имею ввиду не

189