Я создал свой dbml-файл с нужными мне таблицами. Один из сгенерированных методов как таковой, имена были изменены, и это не является синтаксически правильным. Но мой код компилируется с созданным оригинальным методом.
[Association(Name="Clients_ToEmployee", Storage="_ToEmployees", ThisKey="ClientID", OtherKey="ClientID")]
[DataMember(Order=70, EmitDefaultValue=false)]
public EntitySet<ClientToEmployee> ClientToEmployees
{
get
{
if ((this.serializing &&(this._ToEmployees.HasLoadedOrAssignedValues == false)))
{
return null;
}
return this._ToEmployees;
}
set
{
this._ToEmployees.Assign(value);
}
}
Когда я пытаюсь сериализовать свой набор результатов, используя
DataContractSerializer ser =
new DataContractSerializer(clientObj.GetType());
var memStream = new System.IO.MemoryStream();
ser.WriteObject(memStream ,clientObj);
memStream .Seek(0, System.IO.SeekOrigin.Begin);
var streamReader = new System.IO.StreamReader(memStream );
var xml = streamReader.ReadToEnd();
Похоже на этот код, см. Ниже, он всегда возвращает ноль
if ((this.serializing && (this._ToEmployees.HasLoadedOrAssignedValues == false)))
Если я установлю точку останова и пройдусь по коду, то приведенное выше утверждение
this._ToEmployees.HasLoadedOrAssignedValues
- истина, и я получаю свой объект, а не ноль.
Почему он ведет себя правильно, когда я прохожу код? Должен ли я ввести задержку для заполнения объекта Entityset?