Могу ли я скрыть свои поля ICollection , когда у меня есть отображение «один ко многим» только в коде EF4?

Мои классы домена, которые имеют сопоставления "один-ко-многим", обычно принимают следующую форму (непроверенный код):

public Customer Customer
{
    // Public methods.

    public Order AddOrder(Order order)
    {
        _orders.Add(order);
    }

    public Order GetOrder(long id)
    {
        return _orders.Where(x => x.Id).Single();
    }

    // etc.

    // Private fields.

    private ICollection _orders = new List();
}

Примеры кода EF4 Я видел, как открывать общедоступную коллекцию ICollection при работе с отношениями «один ко многим».

Есть ли способ сохранить и восстановить мои коллекции, открыв их? В противном случае может показаться, что мои объекты домена будут разработаны с учетом требований ORM, что, похоже, противоречит духу наших усилий. Предоставление ICollection (с его методами Add и т. Д.) Не кажется особенно чистым и не будет моим подходом по умолчанию.

Обновление

Найдено это сообщение , которое предполагает, что это не так. возможно в мае. Конечно, плакат Microsoft действительно сказал, что они были " И не жаловался. Какая польза от этого? Код такой: Карта hmap = new HashMap (); m отправляю сюда для помощи.

На одном компьютере, который представляет собой Dell Latitude с 64-разрядной версией Windows 7 с установленной .Net 4 Framework, консольное приложение выйдет из строя непосредственно перед запуском Sub Main. Он просто дает общую ошибку Windows «Проблема привела к тому, что программа перестала работать правильно». без возможности просмотра отладочной информации.

Что я пробовал:
- Удаление всего нестандартного ПО
- Комментирование нескольких заявлений, которые, как я думал, могут вызвать проблемы
- Перекомпилирован для Auto CPU, x86 и x64, чтобы увидеть, имеет ли это значение
- Отключен сканер вирусов
. - Пользователь является администратором, но я пытался работать от имени администратора
- В Sub Main первым делом добавлено окно сообщения, чтобы определить место сбоя
- Добавлены попытки перехвата для всего соответствующего кода

. Я смог получить немного больше информации из средства просмотра событий:

Имя сбойного модуля: KERNELBASE.dll, версия: 6.1.7600.16385, отметка времени: 0x4a5bdbdf
Код исключения: 0xe0434f4d Смещение ошибки: 0x0000b727

Следующие несколько записей кажутся мне странными:

Идентификатор сбойного процесса: 0x% 9
Время запуска сбойного приложения: 0x% 10
Путь сбойного приложения:% 11
Путь сбойного модуля:% 12

Мне также удалось загрузить файл .wer (плоский файл отчета об ошибках Windows), и он выдал большую часть той же информации, но также включал некоторые загруженные DLL и другие используемые файлы.

Спасибо, что нашли время, чтобы прочитать мою стену с текстом, и, надеюсь, у кого-то появятся идеи, как действовать дальше.

Джошуа

редактировать:

Я думаю, что следующие вызовы Win32 API могут вызывать проблемы и они были единственными вещами, которые я не мог легко закомментировать без переписывания большого кода.

Если да, то почему только на этой машине: (

' Obtain a handle to the console application window by passing the title of your application.
Dim hWnd As Integer = Process.GetCurrentProcess().MainWindowHandle
Dim hMenu As Integer = GetSystemMenu(hWnd, False)

'WIN API Functions to assist in disabling the Close button on the Console Window
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Integer, ByVal uPosition As Integer, ByVal uFlags As Integer) As Boolean
Private Declare Function GetForegroundWindow Lib "user32" () As Integer
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Integer, ByVal bRevert As Boolean) As Integer
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Integer, ByVal uCmd As Integer) As Integer
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Integer, ByVal lpString As String, ByVal nMaxCount As Integer) As Integer
Private Declare Function ShowWindow Lib "user32.dll" (ByVal hWnd As Integer, ByVal nCmdShow As Int32) As Boolean
Public Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, ByRef cbRemoteName As Integer) As Integer

6
задан JoshF 9 November 2010 в 17:56
поделиться