Entity Fraamewark(u)ALinq

15547 ワード

原文のアドレスhttp://www.alinq.org/
 
ALinqとは何ですか
ALinqは企業レベルのdatabase LINQ providerで、安定、高効率、使いやすいです。ALinqを使ってLinq To SQLと同じです。もしLinq To SQLに詳しいなら、すぐにALinqを習得できます。
 
ALinq入門
ALinqライブラリ参照
1,ALinqライブラリのパスは/bin/です。
2,Linq to Accessデータベースは、ALinq.dll、ALinq.Access.dllとSystem.Data.dllを参照する必要があります。
3,Linq to SQLiteデータベースは、ALinq.dll、ALinq.SQLite.dllとSystem.Data.SQLite.dllを参照する必要があります。
4,その他のデータベース。Oracleに接続するには、ALinq.Oracle.dllまたはALinq.Oracle.Odp.dlを参照する必要があります。ALinq.Oracle.dllのOracle Provider類は、System.Data.OracleClient名前空間のOracleConnection類を使ってOracleデータベースに接続します。ALinq.Oracle.Odp.dlでOracle Providerは、Oracleを使用してOracle.DataAccessの名前空間を提供するConnection接続Oracle。
Data Cotextを作成します
Access Data Contect
//Use connection string initialize,and specify the sql provider.
var context = new ALinq.DataContext("C:/Northwind.mdb",
                                     typeof(ALinq.Access.AccessDbProvider));
 
//or use file name initialize the datacontext, 
//the datacontext will specify the sql provider by file extension name.
context = new ALinq.DataContext("C:/Northwind.mdb");
 
//Use connection initialize.
var builder = new OleDbConnectionStringBuilder
{
    DataSource = "C:/Northwind.mdb",
    Provider = "Microsoft.Jet.OLEDB.4.0"
};
var conn = new OleDbConnection(builder.ConnectionString);
context = new ALinq.DataContext(conn, typeof(ALinq.Access.AccessDbProvider));
.csharpcode.csharpcode pre&唴13;
{啝13
font-size:small;&唵13;
カラー:black;
font-family:consosolas、「Courier New」、courier、monoospace;
background-カラー:&菗菗13;
//white-space:pre;*/&噫13;
}&{13;
.csharp code pre{margin:0 em;}&萶13;
.csharrpcode.rem{color=0000 ff}&菷13;
.csharpcode.kwrd{color=blue 0000 ff}&菗13;
.csharpcode.str{color=blue 006080}&菷13;
.csharpcode.op{color=0000 c 0}&菗13;
.csharpcode.preproc{color=0000 cc 6633;}&菷13;
.csharpcode.asp{background-カラー}と菗13;
.csharrpcode.{啱800000;}&唵13;
.csharpcode.atr{color=0000 ff}&菗13;
.csharpcode.alt&啝13;
{啝13
background-色:菗f 4 f 4;&萶13;
width:100%&菗13;
margin:0 em;
}&{13;
.csharpcode.lnum{color=blue 6060}&菷13;
 
SQLiteData Contect
//Use connection string initialize.
var context = new ALinq.DataContext("C:/Northwind.db",
                                     typeof(ALinq.SQLite.SQLiteProvider));
 
//or use file name initialize the datacontext, 
//the datacontext will specify the sql provider by file extension name.
context = new ALinq.DataContext("C:/Northwind.db");
 
//Use connection initialize.
var builder = new SQLiteConnectionStringBuilder
{
    DataSource = "C:/Northwind.db"
};
var connection = new SQLiteConnection(builder.ToString());
context = new ALinq.DataContext(connection,
                                typeof(ALinq.SQLite.SQLiteProvider));
 
MySql Data Contect
var builder = new MySqlConnectionStringBuilder()
{
    Server = "localhost",
    Port = 3306,
    UserID = "root",
    Password = "test",
    Database = "Northwind"
};
var conn = new MySqlConnection(builder.ToString());
var context = new ALinq.DataContext(conn,
                            typeof(ALinq.MySQL.MySqlProvider));
 
OracleData Contect
var strcon = "Data Source=localhost;Persist Security Info=True;User ID=Northwind;Password=test";
 
//Use connection string initialize,and specify the sql provider.
var context = new ALinq.DataContext(strcon, typeof(ALinq.Oracle.OracleProvider));
 
//or
context = new ALinq.DataContext(strcon, typeof(ALinq.Oracle.Odp.OracleProvider));
 
//Use connection string initialize,and specify the sql provider.
context = new ALinq.DataContext(new System.Data.OracleClient.OracleConnection(strcon),
                                    typeof(ALinq.Oracle.OracleProvider));
//or
context = new ALinq.DataContext(new Oracle.DataAccess.Client.OracleConnection(strcon),
                                    typeof(ALinq.Oracle.Odp.OracleProvider));
 
Sql Data Contect
MSSQL 2000、MSSQL 2005 DataContect初期化。
//MSSQL 2000
var conn = @"Data Source=NOTEBOOK;Initial Catalog=Northwind1;
            Integrated Security=True";
var db = new ALinq.DataContext(new SqlConnection(conn),
                        typeof(ALinq.SqlClient.Sql2000Provider));
Console.WriteLine(db.DatabaseExists());
 
//MSSQL 2005
conn = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Northwind.mdf;
             Integrated Security=True;Connect Timeout=30;User Instance=True";
db = new ALinq.DataContext(new SqlConnection(conn),
                     typeof(ALinq.SqlClient.Sql2005Provider));
Console.WriteLine(db.DatabaseExists()); 
 
マッピングデータベース
ALinqマッピングはDinqと同じである。
AttributeMapping
[ALinq.Mapping.Table(Name=”Customers”)]
public class Customer
{
    [ALinq.Mapping.Column]
    public string CustomerID;
            
    [ALinq.Mapping.Column]
    public string CompanyName;
            
    [ALinq.Mapping.Column]
    public string ContactName;
            
    [ALinq.Mapping.Column]
    public string City;
}
 
Xml Mapping
<?xml version="1.0" encoding="utf-8"?>
<Database Name="NorthwindDatabase" Provider="ALinq.Access.AccessDbProvider" 
          xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007">
  <Table Name="Customers" Member="Customers">
    <Type Name="ALinqDocument.Customer">
        <Column Member="CustomerID"/>
        <Column Member="CompanyName"/>
        <Column Member="ContactName"/>
        <Column Member="ContactTitle"/>
        <Column Member="Address"/>
        <Column Member="City"/>
        <Column Member="Region"/>
        <Column Member="PostalCode"/>
        <Column Member="Country"/>
        <Column Member="Phone"/>
        <Column Member="Fax"/>
    </Type>
  </Table>
</Database> 
 
クエリーデータベース
var db = new ALinq.DataContext(@"C:/Northwind.mdb");
 
var companyNameQuery = from cust in db.GetTable<Customer>()
                       where cust.City == "London"
                       select cust.CompanyName;
 
foreach (var customer in companyNameQuery)
    Console.WriteLine(customer);
 
//use XmlMappingSource
var xmlMapping = ALinq.Mapping.XmlMappingSource.FromUrl("C:/Northwind.map");
db = new ALinq.DataContext(@"C:/Northwind.mdb", xmlMapping);
 
companyNameQuery = from cust in db.GetTable<Customer>()
                   where cust.City == "London"
                   select cust.CompanyName;
 
foreach (var customer in companyNameQuery)
    Console.WriteLine(customer);
 
ALinqは何のために使いますか
1,Linq to SQLのすべての特色を実現します。Linq toSQLの中のすべての特色はALinqの中で見つけられます。
2,Linq to SQLと完全に互換性があります。ALinqのAPIはLinq to SQLと同じで、あなたが知っているLinqto SQL知識は直接ALinqに応用できます。
3,ほとんどの商業データベースをサポートしています。例えば、Access、MSSQL、Oracle、SQLite、MySQL、Firebird、DB 2、PostgreSQLのように、これからもっと多くのデータベースをサポートします。
4,Monoの下で運転できます。
5,強力なORDesignerを提供します。ORDesignerはALinqのエンティティ可視化装置である。これはVSL 2008とVSL 2010に集積されており、より速く、より簡単に豊富な領域駆動モデルを作成することができます。ORDesignerの主な特徴は、Access、SQLite、MySql、Oracle、SQL 2000、SQL 2005などの複数のデータベースをサポートすることである。データベースからエンティティをドラッグして作成することをサポートします。Xmlマッピングファイルを作成して、データベースアプリケーションから独立して作成しやすいです。ORDesignerリソース管理では、クラスをダブルクリックして図表のエンティティモデルにナビゲーションし、より簡単に図表の中にエンティティモデルを見つけます。エンティティ属性の属性をカスタマイズして、ビュー属性の順序を調整します。T 4テキストのテンプレートをサポートします。ユーザー定義で生成できるコード。グラフビュー(Diagram View)オブジェクトモデルを可視化するのは難しい場合があります。データモデルが大きい場合、クラス間の関係を見るのは難しいです。したがって、グラフビューを作成するのは良い解決方法です。データクラスをデータベースに更新します。データクラスを変更すると、メンバーを追加すると、グラフから直接マッピングテーブルを更新することができます。http://www.alinq.org/ORDesigner.aspxを参照してください。