Игнорирование свойства класса в коде Entity Framework 4.1 сначала
насколько я понимаю, это [NotMapped]
атрибут недоступен до EF 5, который в настоящее время находится в CTP, поэтому мы не можем использовать его в производстве.
как я могу отметить свойства в EF 4.1, которые нужно игнорировать?
обновление: Я заметил еще кое-что странное. Я получил [NotMapped]
атрибут для работы, но по какой-то причине EF 4.1 по-прежнему создает столбец с именем Disposed в базе данных, даже если public bool Disposed { get; private set; }
обозначен [NotMapped]
. Класс реализует IDisposeable
of конечно, но я не понимаю, какое это имеет значение. Есть мысли?
2 ответов
можно использовать NotMapped
аннотация атрибутивных данных для указания кода-сначала исключить конкретное свойство
public class Customer
{
public int CustomerID { set; get; }
public string FirstName { set; get; }
public string LastName{ set; get; }
[NotMapped]
public int Age { set; get; }
}
[NotMapped]
атрибут включен в System.ComponentModel.DataAnnotations
пространство имен.
вы можете сделать это с помощью Fluent API
переопределение в своем DBContext
класс:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>().Ignore(t => t.LastName);
base.OnModelCreating(modelBuilder);
}
http://msdn.microsoft.com/en-us/library/hh295847 (v=против 103).aspx
версию я проверил это EF 4.3
, который последняя стабильная версия, доступная при использовании NuGet.
редактировать : сентябрь 2017
Asp.NET Core (2.0)
аннотации
если вы используете asp.net core (2.0 на момент написания этой статьи), то [NotMapped]
атрибут может использоваться на уровне свойств.
public class Customer
{
public int Id { set; get; }
public string FirstName { set; get; }
public string LastName { set; get; }
[NotMapped]
public int FullName { set; get; }
}
свободно API
public class SchoolContext : DbContext
{
public SchoolContext(DbContextOptions<SchoolContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>().Ignore(t => t.FullName);
base.OnModelCreating(modelBuilder);
}
public DbSet<Customer> Customers { get; set; }
}
начиная с EF 5.0, вам нужно включить System.ComponentModel.DataAnnotations.Schema
пространство имен.