Как мне сделать не сохраняемые свойства с помощью codefirst EF4?
MS говорит, что есть атрибут StoreIgnore, но я не могу его найти.
Есть ли способ установить это с помощью EntityConfiguration?
Как мне сделать не сохраняемые свойства с помощью codefirst EF4?
MS говорит, что есть атрибут StoreIgnore, но я не могу его найти.
Есть ли способ установить это с помощью EntityConfiguration?
В EF Code-First CTP5 вы можете использовать аннотацию [NotMapped]
.
using System.ComponentModel.DataAnnotations;
public class Song
{
public int Id { get; set; }
public string Title { get; set; }
[NotMapped]
public int Track { get; set; }
В настоящее время я знаю два способа сделать это.
Добавьте ключевое слово "динамическое" в свойство, которое останавливает его:
private Gender gender;
public dynamic Gender
{
get { return gender; }
set { gender = value; }
}
Переопределить OnModelCreating в DBContext и переназначить весь тип, опустив свойства, которые вы не хотите сохранять:
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Person>().MapSingleType(p => new { p.FirstName, ... });
}
Используя метод 2, если команда EF вводит Ignore, вы сможете легко изменить код на:
modelBuilder.Entity<Person>().Property(p => p.IgnoreThis).Ignore();
Я не уверен, что это еще доступно.
На этой странице MSDN описываются Игнорирующий атрибут и API, но ниже, в комментариях, кто-то пишет 4 июня 2010 года:
Вы сможете игнорировать свойства в следующем выпуске Code First,
Если вы не хотите использовать аннотации, вы можете использовать Fluent API. Переопределите OnModelCreating
и используйте метод DbModelBuilder Ignore()
. Предположим, что у вас есть сущность "Song":
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Song>().Ignore(p => p.PropToIgnore);
}
}
Вы также можете использовать EntityTypeConfiguration для переместить конфигурации для разделения классов для лучшей управляемости:
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new SongConfiguration());
}
}
public class SongConfiguration : EntityTypeConfiguration<Song>
{
public SongConfiguration()
{
Ignore(p => p.PropToIgnore);
}
}
Добавить используя System.ComponentModel.DataAnnotations. Схема к классу модели. (Должен включать "SCHEMA" )
Добавить [NotMapped] аннотацию данных к полям, которые вы хотите сохранить от сохранения (т.е. не сохранять в базе данных).
Это предотвратит их добавление в качестве столбца в таблицу в db.
Обратите внимание: предыдущие ответы могут включать эти биты, но у них не было полного предложения "using". Они просто остановили "схему" - в которой определяется атрибут NotMapped.