Ignorowanie właściwości klasy w kodzie Entity Framework 4.1
Rozumiem, że atrybut [NotMapped]
nie jest dostępny aż do EF 5, który jest obecnie w CTP, więc nie możemy go używać w produkcji.
Jak zaznaczyć właściwości w EF 4.1, które mają być ignorowane?
UPDATE: zauważyłem coś jeszcze dziwnego. Mam atrybut [NotMapped]
do pracy, ale z jakiegoś powodu EF 4.1 nadal tworzy kolumnę o nazwie usuniętej w bazie danych, mimo że public bool Disposed { get; private set; }
jest oznaczona [NotMapped]
. Klasa implementuje IDisposeable
oczywiście ale nie widzę jak to powinno Materia. Jakieś pomysły?
2 answers
Możesz użyć adnotacji danych atrybutu NotMapped
, aby polecić Kod-najpierw wyklucz konkretną właściwość
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]
atrybut jest zawarty w przestrzeni nazw System.ComponentModel.DataAnnotations
.
Możesz to zrobić alternatywnie za pomocą Fluent API
nadrzędnej funkcji OnModelCreating
w twojej klasie 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=vs.103). aspx
Sprawdzałem wersję EF 4.3
, która jest najnowszą stabilną wersją dostępną przy użyciu NuGet.
Edytuj : Wrzesień 2017
Asp.NET Core (2.0)
Adnotacja danych
Jeśli używasz asp.net core (2.0 w momencie pisania) atrybut [NotMapped]
może być używany na poziomie właściwości.
public class Customer
{
public int Id { set; get; }
public string FirstName { set; get; }
public string LastName { set; get; }
[NotMapped]
public int FullName { set; get; }
}
Fluent 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; }
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-30 17:20:45
Od wersji EF 5.0, musisz dołączyć przestrzeń nazw System.ComponentModel.DataAnnotations.Schema
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-27 16:53:48