Posts Tagged “LINQ to SQL”

As there is obviously still some uncertainty if Delphi Prism is really a fully fledged .NET development environment, I’m posting an example below to prove that Prism does allow you to LINQ to SQL:

This is a “Customer” class definition with a manual mapping to a “Customers” table on a SQL Server 2005:


type
[Table(Name := 'Customers')]
Customer = class(Object)
private
protected
public
[Column(IsPrimaryKey := true)]
property CustNo:Double;
[Column]
property Name: String;
[Column]
property Country: String;
end;

This is the actual LINQ to SQL code that relies on the class definition above:


method MainForm.button2_Click(sender: System.Object; e: System.EventArgs);
var
LCustomers: Table<Customer>;
LDBMain: DataContext;
LConnectionString:String;
begin
LConnectionString := 'Data Source=.\SQLEXPRESS;Initial Catalog=DBDEMOS;Integrated Security=True';
LDBMain := new DataContext(LConnectionString);
LCustomers := LDBMain.GetTable<Customer>();
var USCustomers := from Customer in LCustomers where Customer.Country = 'US' select Customer;

for each Customer in USCustomers do begin
listBox1.Items.Add(Customer.Name);
end;
end;

Interesting to note is that Prism has a very nice name scope mechanism. Even though “Customer” is a Class name, it is also used as local variable in the LINQ and FOR constructs. I am not saying that this is a good practice though ;-)

Technically, both “Customer” variables are different variables – which is quite important to understand.

The full demo source can be downloaded here: [download#2].

Comments View Comments

CodeGear Technology Partner