如何不坚持财产EF4代码第一?

如何使用codefirst EF4创建非持久性属性?

MS说有一个StoreIgnore属性,但我找不到它。

http://blogs.msdn.com/b/efdesign/archive/2010/03/30/data-annotations-in-the-entity-framework-and-code-first.aspx

有没有办法使用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; }
    }
    
  • 在DBContext中重写OnModelCreating并重新映射整个类型,省略不想保留的属性:

    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被描述,但是在下面,在评论中,有人在2010年6月4日写道:

    您将能够忽略下一代Code First版本中的属性,

    链接地址: http://www.djcxy.com/p/90195.html

    上一篇: How not persist property EF4 code first?

    下一篇: c# Linq query question with EF4 table per type Inheritance