2008年6月12日 星期四

Visual C# 3.0 新語法筆記




Visual C# 3.0 新語法筆記


摘錄如下
  • 隱含型別宣告 (Local Variable Type Inference)
  • 自動執行屬性 (Auto-Implemented Properties)
  • 匿名型態 (Anonymous Types)
  • 物件初始化 (Object Initializers)
  • 集合初始化 (Collection Initializers)
  • 擴展方法 (Extension Methods)
  • Lambda 表達式 (Lambda Expression)
  • Lambda 表達式樹 (Lambda Expression Trees)

Lambda小心得

C# 3.0 裡頭有有一個新功能叫 Lambda
突然覺得,有很 Strategy Pattern 的感覺
可以即時的抽換演算法

但是看網路上的範例已經捉不到頭緒
使用時機為何?? 還要再想想才知。

這有一篇文章寫的還滿清楚的
C# 3.0 - Lambda Expressions

2008年6月10日 星期二

ORM Survey

這兩天在 Survey OR Mapping 的方式
有找到幾個 solution

1. MyGeneration
這是一個 Open Source 的 Code Generator
可以依DB Schema 產生出 Entity 完全以物件的方式來做查詢的工作
看來還滿好用的

public void JoinWithArithmeticExpressionOrderByCalulatedColumn()
{
// Notice we create a calulated column based on the TotalSales, then Order by it descending
CustomerQuery cust = new CustomerQuery();
OrderQuery order = new OrderQuery();
OrderItemQuery item = new OrderItemQuery();

cust.Select(cust.CustomerName, (item.Quantity * item.UnitPrice).Sum().As("TotalSales"));
cust.InnerJoin(order).On(order.CustID == cust.CustomerID);
cust.InnerJoin(item).On(item.OrderID == order.OrderID);
cust.GroupBy(cust.CustomerName);
cust.OrderBy("TotalSales", esOrderByDirection.Descending);

CustomerCollection coll = new CustomerCollection();
coll.Load(cust);
}

2008/06/12 補充
其實上面說的有點錯誤
MyGenerator 只是一個 Code Generator, 要產生如上面一樣的 Code 必需要有 Template 的搭配。
上面的 Code 是由一家名為 Entity Space的公司所提供,所以是要錢的~

如果不想要花錢,MyGenerator 網站上還有提供一套 dOOdads 這就很類似以前所用的 DAO的架構了。

所以還是來學一下 NHibernate 比較實在。



2. NHibernate
就是 Hibernate for .Net 啦~
是由 Java 開始發展到 .Net 來的。這是一個有很多大型專案測試過的。穩定性十足

3. CSLA
這並不是 ORMapping 的 solution。他比較像是 Entity Framework
阿源哥哥的軟體組裝工廠裡有一些簡單的介紹

4. Linq to Sql
這是 .Net Framwork 3.5 裡頭新的功能,還在研究當中