2009-11-10 6 views
19

Я хотел бы знать, что есть способ исключить некоторые поля из базы данных? Например:Исключить поле/свойство из базы данных с помощью Entity Framework 4 и Code-First

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 из базы данных?

+0

Возможный дубликат [Игнорирование свойство класса в Entity Framework 4.1 Code First] (HTTP://stackoverflow.com/questions/10385248/ignoring-a-class-property-inity-framework-4-1-code-first) –

ответ

20

В текущей версии единственный способ, чтобы исключить свойство является явно отобразить все остальные столбцы:

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, запрашивающий эту функцию :)

Надеется, что это помогает

Alex

+3

Я понял, что единственный способ сделать это на сегодняшний день - это то, как вы упомянули. Я разместил его в блоге EFDesign долго: http://blogs.msdn.com/efdesign/archive/2009/10/12/code-only-further-enhancements.aspx – Yogesh

+0

Был бы настоящим бонусом, если они добавят ' .Exclude() ' – Zapnologica

+0

Есть ли способ исключить конкретное поле из всех классов модели с использованием шаблона T4? –

30

Я знаю, что это старый вопрос, но в случае, если кто-либо (как и я) приходит к нему из поисковика h ...

Теперь это возможно в инфраструктуре сущности 4.3 для этого. Вы бы сделали это так:

builder.Entity<Employee>().Ignore(e => e.AddressAs); 
+2

Или в VB 'builder.Entity (Of Employee) .Ignore (Функция (e) e.AddressAs)' –

+3

Будет ли это глобальным? Я имею в виду, что, если я хочу сделать это только для этого звонка? Могу ли я включить его, так сказать? – vbullinger

+0

Да еще полезен. вы просто спасли мне 40 минут исследований. –