Это не совсем возможно. Целый IO API должен быть повторно реализован. NIO означает неблокирующий ввод / вывод, это не то же самое, что асинхронный ввод / вывод. Неблокирующая реализация реализована в JAVA и вкратце, это означает, что ОС не имеет возможности уведомлять среду выполнения о завершении операции. Isned Java использует системные вызовы select()
или poll()
для проверки наличия данных.
Я мог бы поговорить об этом, но украденная картинка стоит 100 слов:
Вот почему в JAVA требуется отдельный поток постоянно вызывать check, check, check, check .....
Я не знаю платформу .NET, но если то, что вы опубликовали, правильно, то используется асинхронный ввод-вывод, поэтому последний столбец. Но я не доверяю ничему, что исходит от Microsoft.
Надеюсь, это ответит на ваш вопрос. Также здесь приведен дополнительный материал для чтения: https://stackoverflow.com/a/2625565/8951886
Ну, я ответил на свой собственный вопрос. Я думаю, отправляя Вашу проблему, является почти столь же очистительным как выяснение его с кем-то. Если я должен был сделать составной идентификатор PersonJob компонентом или классом, т.е.
<class name="PersonJob" table="dbo.PersonJob" lazy="true">
<composite-id name="PersonJobKey" class="PersonJobKey">
<key-property name="PersonId"></key-property>
<key-property name="JobId"></key-property>
</composite-id>
</class>
Затем я могу просто сделать это:
PersonJobKey key = new PersonJobKey() { PersonId = 1, JobId = 1 };
PersonJob obj = Session.Get<PersonJob>(key);
int yearsOfEmployment = obj.YearsOfEmployment;
круто. надежда это помогает кому-либо еще понимающему это...
Спасибо за регистрацию ответа выше, я смотрел на него против объекта, который я отобразил, где составной ключ не имеет имени или класса. Когда я пытался делать класс для представления составного ключа, он изменил способ, которым вел себя объект при использовании другим кодом. Также я хотел записать что-то как;
Session.Get<SalesRepArea>(new { AreaCode = "ACode", RegionCode = "RCode"});
Я нашел, что nHibernate не мог иметь большого смысла анонимного объекта, но я понял, что мне не нужно название моего составного ключа или тип класса. То, что Получают nHibernate, метод после, на самом деле, является временным объектом так, чтобы это могло добраться, это - эквивалентный объект от базы данных (должен быть то, почему необходимо переопределить, равняется методу в классе C#, чтобы заставить составной ключ работать). Таким образом для следующей карты
<class name="SalesRepArea">
<composite-id>
<key-property
name="AreaCode" column="AreaCode" type="String" length="12" />
<key-property
name="RegionCode" column="RegionCode" type="String" length="12" />
</composite-id>
Я пишу немного меньше кода и обхожусь без объекта, представляющего ключ для получения
SalesRepArea myArea = Session.Get<SalesRepArea>(
new SalesRepArea()
{
AreaCode = "ACode",
RegionCode = "RCode"
}
);
Я не говорю, что именованный ключевой метод плох, меньше кода не всегда лучше, он должен только показать, что это В спящем режиме, ищет объект, что ключ находится в получить конкретный объект от базы данных.
Если у меня есть он неправильно сообщенный мне, но я надеюсь, что это помогает, поскольку я испытывал немного затруднений из-за этого.
Спасибо,
Mark