2016-01-14 3 views
2

, если предприятие вПочему EF6 не поддерживает `ignore` свойство объекта Property (сложное свойство) Fluent API?

public class AddressDetail 
{ 
    public string Country{get;set;} 
} 

public class Order 
{ 
    public AddressDetail AddressDetail{get;set;} 
} 

Как игнорировать Oreder.AddressDetail.Country недвижимость по Fluent API не [NotMap]?

Я нашел решение для EF6, но я не знаю Почему перед EF6 есть функция, у EF6 нет функции?

Для EF5 и старше: В DbContext.OnModelCreating дублированием для вашего контекста:

modelBuilder.Entity<Product>().Ignore(p => p.AddressDetails.Country); 

Для EF6: Вы не повезло. См. Mrchief's answer.

enter image description here

+0

вы пробовали положить '[NotMapped] 'атрибут свойства? – Knelis

+2

См. Http://stackoverflow.com/questions/24400719/ignore-some-inherited-properties-in-ef6-code-first-mapping-net4-not-net4-5 и http://stackoverflow.com/questions/ 21839131/tell-ef-6-to-ignore-a-private-property –

+0

@ Я хочу знать, почему'. [NotMapped] 'способен игнорировать свойство. – huoxudong125

ответ

0

Я понимаю, это исключение, которое только простые выражения свойств позволены, так что если вы хотите, чтобы игнорировать свойство собственности, вы должны сделать это на тип внешнего объекта:

modelBuilder.Types<WhateverTheTypeOfResponseIs>() 
    .Configure(c => c.Ignore(r => r.MobilePhone)); 

Хотя, я думаю, правильный синтаксис для EF6 будет:

modelBuilder.Entity<WhateverTheTypeOfResponseIs>() 
    .Ignore(r => r.MobilePhone);