Исключить поле / свойство из базы данных с помощью Entity Framework 4 & Code-First - PullRequest
24 голосов
/ 10 ноября 2009

Хотелось бы узнать, есть ли способ исключить некоторые поля из базы данных? Например:

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string FatherName { get; set; }

    public bool IsMale { get; set; }
    public bool IsMarried { get; set; }

    public string AddressAs { get; set; }
}

Как я могу исключить поле AddressAs из базы данных?

Ответы [ 4 ]

58 голосов
/ 26 декабря 2013

для дальнейшего использования: вы можете использовать аннотации данных MSDN EF - код первых аннотаций данных

[NotMapped]        
public string AddressAs { get; set; }
32 голосов
/ 09 марта 2012

Я знаю, что это старый вопрос, но в случае, если кто-то (как я) придет к нему из поиска ...

Теперь это возможно в рамках сущности 4.3, чтобы сделать это. Вы бы сделали это так:

builder.Entity<Employee>().Ignore(e => e.AddressAs);
20 голосов
/ 30 ноября 2009

В текущей версии единственным способом исключить свойство является явное сопоставление всех остальных столбцов:

builder.Entity<Employee>().MapSingleType(e => new {
  e.Id,
  e.Name,
  e.FatherName,
  e.IsMale,
  e.IsMarried
});

Поскольку на AddressAs нет ссылки, он не является частью сущности / базы данных.

Команда EF рассматривает добавив что-то вроде этого:

builder.Entity<Employee>().Exclude(e => e.AddressAs);

Предлагаю вам оставить комментарий в блоге EFDesign, требуя эту функцию:)

Надеюсь, это поможет

Alex

0 голосов
/ 09 июля 2018

Также возможно добавить столбец, который вы хотите игнорировать, как свойство тени в DbContext:

builder.Entity<Employee>().Property<string>("AddressAs");

Затем вы можете запросить этот столбец следующим образом:

context.Employees.Where(e => EF.Property<string>(e, "AddressAs") == someValue);
...