Entity Framework 4 および Code-First を使用してデータベースからフィールド/プロパティを除外する

StackOverflow https://stackoverflow.com/questions/1707663

質問

データベースから一部のフィールドを除外する方法はあるのか知りたいのですが?たとえば:

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が参照されていないので、

これは、Entity /データベースの一部ではありません。

EFチームであるの考慮のこのような何かを追加します

builder.Entity<Employee>().Exclude(e => e.AddressAs);

私はあなたがこの機能を要求し、EFDesignブログにコメントを残し伝える勧め:)

ホープ、このことができます。

アレックス

他のヒント

今後の参考のために:あなたは、データのアノテーションを使用することができます 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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top