Archives for the 'C#' Category
Calling an Oracle stored procedure using NHibernate
The stored procedure must have an out sys_refcursor parameter as the first argument.
Tested with NHibernate 2.1.2 and Oracle 11g.
Needs Oracle.DataAccess (not System.Data.OracleClient). Tested with Oracle.DataAccess 2.111.6.0 AMD64.
NHibernate config:
<hibernate-configuration xmlns=”urn:nhibernate-configuration-2.2″>
<session-factory>
<property name=”connection.driver_class”>
NHibernate.Driver.OracleDataClientDriver
</property>
</session-factory>
</hibernate-configuration>
NHibernate mapping:
<hibernate-mapping xmlns=”urn:nhibernate-mapping-2.2″ assembly=”SampleProject” namespace=”SampleProject”>
<sql-query name=”GetEmployeesByDepartmentId”>
[…]
LINQPad – a worthy successor to Snippet Compiler
In 2009 I blogged about how Snippet Compiler allows us to test out C# code without having to create a project in Visual Studio just for that. Now there’s something better: LINQPad. Don’t be misled by its name; it’s not just for LINQ, it can run any C#, VB, or even SQL code. I particularly […]
LINQ to Entities: Deferred Execution and Lazy Loading
How do deferred execution and lazy loading work in LINQ to Entities (Entity Framework)? Let’s find out!
First, some sample data. We don’t want to make it too simple, so let’s have three entities:
Employee, who belongs to a Department
Department, which is under a Functional Group
Functional Group
The data:
Functional Groups
Id
Description
1
Functional Group 01
2
Functional Group 02
Departments
Id
Description
FunctionalGroupId
1
Department 01
1
2
Department 02
2
3
Department 03
2
Employees
Id
First Name
Last […]
By value, by reference: by analogy
Here’s my best attempt to explain C# value types and reference types, and “pass by value” and “pass by reference” to a newbie. (Not you, of course.)
Value types
A piece of paper, on which is written the number 5. You use this number to calculate something.
Reference types
A piece of paper, on which is written a memory […]
Data Sanitizer
I wrote a C# console app to sanitize CSV files. It replaces numbers with X’s so that social security number 123456 becomes XXXXXX and the address “49 Main St” becomes “XX Main St”. Both the input and the output are streamed to ensure that the program won’t run out of memory even with arbitrarily large […]