Исключить поле/свойство из базы данных с помощью Entity Framework 4 и Code-First

StackOverflow https://stackoverflow.com/questions/1707663

Вопрос

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

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 из базы данных?

Это было полезно?

Решение

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

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);

Я предлагаю вам оставить комментарий в блоге EEFDesign с просьбой об этой функции :)

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

Алекс

Другие советы

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

[NotMapped]        
public string AddressAs { get; set; }

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

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

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

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

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

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

context.Employees.Where(e => EF.Property<string>(e, "AddressAs") == someValue);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top