2012-02-13 1 views
0

У меня есть класс Персонал, который имеет отношение к FunctionType.EF: установка значения для столбца внешнего ключа во время Create() принудительно перезагружает от иностранных объектов?

public partial class Personnel 
{ 
    #region Primitive Properties 
    public virtual long Id 
    { 
     get; 
     set; 
    } 

    public virtual string Name 
    { 
     get; 
     set; 
    } 

    public virtual Nullable<long> FunctionType_Id 
    #endregion 

    #region Navigation Properties 
    public virtual FunctionType FunctionType 
    #endregion 
} 


Я следующие FunctionTypes в базе:

id | name 
---+----- 
5 | five 
10 | ten 

Когда я создаю новый персонала объект вроде этого:

var p = new Personnel 
{ 
    Name = "abc", 
    FunctionType_Id = 5 
}; 

и добавить этот объект к DbSet:

dbSet.Add(p); 

и сохранить его (контекст является DbContext):

context.SaveChanges(); 

ФВ получает первый все связанные с Персоналии FunctionType = 5, прежде чем добавить объект с помощью оператора INSERT в базе данных? (Для отслеживания этого я использовал SQL Profiler)

Этот запрос может оказать отрицательное влияние на производительность в случае, если много человек уже связано с этим FunctionType.

Может кто-нибудь объяснить, что не так в дизайне?

+0

Просьба предоставить однозначный код, который имеет смысл. 'FunctionType = 5' не будет компилироваться, если нет неявного преобразования. Некоторые свойства отображаются как поля. – Eranga

+0

Исправлено: «FunctionType_Id = 5» –

+0

Показать сегмент кода, в котором вы сохраняете объект. – Eranga

ответ

0

После некоторого расследования кажется, что проблема заключается в сгенерированных сущностях. Объекты (Personnel и FunctionType), сгенерированные с использованием шаблона POCO.

Когда я переключился на ADO.NET DBContext Generator, все странное поведение было решено.

Однако у меня нет подробного объяснения этого, кто-то знает об этом больше?