Исключить поле/свойство из базы данных с помощью Entity Framework 4 и Code-First
-
19-09-2019 - |
Вопрос
Хотелось бы узнать, есть ли способ исключить некоторые поля из базы данных?Например:
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);