Entity Framework_ALinq
来源:互联网 发布:类似爱情2只有我知mp4 编辑:程序博客网 时间:2024/06/05 11:28
什么 ALinq
ALinq是一个企业级的database LINQ provider,它稳定、高效、容易使用。使用 ALinq 与Linq To SQL一样,如果你对Linq To SQL很熟悉,那么很快就能学会ALinq。
ALinq入门
引用 ALinq 库
1, ALinq库的路径是 <install path>/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.dll。ALinq.Oracle.dll 中 OracleProvider 类,使用 System.Data.OracleClient 命名空间的 OracleConnection 类连接Oracle数据库;ALinq.Oracle.Odp.dll 中 OracleProvider,使用 Oracle 提供 Oracle.DataAccess 命名空间的 Connection 连接Oracle。
创建 DataContext
AccessDataContext
//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));SQLiteDataContext
//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));MySqlDataContext
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));OracleDataContext
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));//orcontext = 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));//orcontext = new ALinq.DataContext(new Oracle.DataAccess.Client.OracleConnection(strcon), typeof(ALinq.Oracle.Odp.OracleProvider));SqlDataContext
MSSQL 2000、MSSQL 2005 DataContext 初始化。
//MSSQL 2000var 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 2005conn = @"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 映射与 DLinq一样。
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;}XmlMapping
<?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 XmlMappingSourcevar 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、DB2、PostgreSQL,之后还会支持更多的数据库。
4, 可以运行在 Mono 下。
5, 提供强大ORDesigner。ORDesigner是ALinq 一个实体可视化设计器。它集成在VS2008和VS2010中,你可以更快、更容易地创建丰富的领域驱动模型(domain-driven models)。ORDesigner的主要特点是:支持多个数据库,如Access、SQLite、MySql、Oracle、SQL2000、SQL2005;支持从数据库中拖拽创建实体;创建 Xml 映射文件,更容易写一个独立于数据库应用程序;在ORDesigner资源管理,双击类导航到图表中的实体模型,更容易地在图表中找到实体模型;自定义实体属性(property)的属性(Attribute),调整视图属性(property)的顺序;支持 T4 文本模版。可以自定义生成的代码;图表视图(Diagram View)。可视化一个对象模型有时有点困难。当数据模型比较大时,查看类之间的关系很难。因此,创建图表视图是一个好的解决方法;更新数据类(data class)到数据库。当你修改数据类时,如添加一个成员,可以直接从图表更新映射表。请参考 http://www.alinq.org/ORDesigner.aspx。
- Entity Framework_ALinq
- entity
- entity
- Entity
- @Entity
- Entity Layer
- Entity Model
- Entity Customization
- @Entity陷阱
- Entity FrameWork
- Entity Framework
- Entity简介
- Entity Bean
- Entity详解
- Entity SQL
- XML entity
- html entity
- Entity Framework
- 中文转拼音,首字母小写
- 婚姻的境界
- 申请设计师
- 做程序员头疼怎么办?
- C#访问共享目录 得到共享目录文件列表和修改里面的文件
- Entity Framework_ALinq
- jquery 清除表单数据 clear from data
- .net绑定、格式化日期
- poj 3253 哈夫曼树
- Java运行时调用方法、方法名、及行数
- 【翻译WINDOWS NT FILE SYSTEM INTERNAL】NT缓存管理器一(5)
- ARM处理器中CP15协处理器的寄存器1376698090
- poj 3253 哈夫曼树
- 悲观锁乐观锁及hibernate对它们的支持