隆重推荐:DAC 4.0 全新发布
2012-01-07 19:25
176 查看
DAC 4.0 是一个全新的版本, 几乎全部重写了以前的代码,设计的结构也简化很多,基于.net4,使用lambda表达式代替反射,去除大量过时的功能(如DataTable和DataSet的相关功能等),去除自定义表达式部分,通过解析lambda表达式实现自定义条件查询。 使用.net自带Configuration功能,只要web.config或app.config,不需要额外的配置文件,方便配置使用;去除xml mapping方式,支持DLinq属性。支持多种数据库(已测试sql server, mysql, sqlite及oracle), 支持mono(ubuntu 11.10 + mono 2.10.5 + mysql 5.1.58测试通过)。
代码示例:
初启化,通过配置文件或connection string构造DataContext:
lambda表达式查询:
或linq查询:
增删改:
通过主键获取单个实例:
支持排序和分页:
部分列:
无实例类查询:
事务处理:
配置文件示例:
下载地址:http://dac.codeplex.com/
相关阅读:
/article/5037141.html (实体生成工具使用RazorEngine,模版可轻松实制)
代码示例:
初启化,通过配置文件或connection string构造DataContext:
var dc = new DataContext("RaisingStudio.Data.TestProject.Properties.Settings.DefaultConnectionString"); 或 var dc = new DataContext("server=localhost;User Id=root;password=root;database=test;");
lambda表达式查询:
var q = this.dc.Query<Item>(i => i.Name == "test" && i.Status == "ok");
或linq查询:
var q = from s in dc.GetQuery<Supplier>() where s.SuppId > 0 && s.Name == "for Test3" select s;
增删改:
this.dc.Insert<Product>(new Product { ProductId = Guid.NewGuid().ToString(), CategoryId = categoryId, Name = "for Test4" }); this.dc.Delete<Supplier>(suppId); this.dc.Update<Product>(product); this.dc.Save<Category>(category);
通过主键获取单个实例:
var product = this.dc.GetEntity<Product>(productId);
支持排序和分页:
List<Item> items = this.dc.Query<Item>(ExpressionExtension.Empty<Item>().Take(3)).ToList(); var q = (from i in this.dc.GetQuery<Item>() select i).Skip(1).Take(2); int count = this.dc.Query<Item>(ExpressionExtension.Empty<Item>().Skip(1)).Count();
部分列:
this.dc.Save<Item>(item, new string[] { "UnitCost" }); this.dc.Insert<Item>(item, new Expression<Func<Item, object>>[] { i => i.ItemId, i => i.Name, i => i.ListPrice, i => i.ProductId, i => i.Status });
无实例类查询:
Command command = new Command("SELECT * FROM Product WHERE CategoryId = @p1"); command.AddParameter("@p1", categoryId); var q = this.dc.Query(command); int count = 0; foreach (dynamic p in q) { Assert.IsNotNull(p); Assert.AreEqual(p.CategoryId, categoryId); count++; }
事务处理:
this.dc.BeginTransaction(); try { int result = this.dc.Insert<Supplier>(new Supplier { Name = "s for Test6", Status = "done", City = "dalian" }); int suppId = Convert.ToInt32(this.dc.GetIdentity<Supplier>()); result = this.dc.Delete<Supplier>(suppId); Category category = new Category { CategoryId = Guid.NewGuid().ToString(), Name = "c for Test6", Descn = "d for Test6" }; Product product = new Product { ProductId = Guid.NewGuid().ToString(), Name = "p for Test6", Descn = "d for Test6", CategoryId = category.CategoryId }; result = this.dc.Insert<Category>(category); result = this.dc.Insert<Product>(product); this.dc.CommitTransaction(); } catch (Exception ex) { this.dc.RollbackTransaction(); throw ex; }
配置文件示例:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name="raisingstudio.data" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <section name="CommandConverter.Settings" type="RaisingStudio.Data.CommandConverterSettings, RaisingStudio.Data" /> <section name="CommandBuilder.Settings" type="RaisingStudio.Data.CommandBuilderSettings, RaisingStudio.Data" /> </sectionGroup> </configSections> <system.data> <DbProviderFactories> <add name="System.Data.SQLite" invariant="System.Data.SQLite" description="ADO.NET Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /> <add name="Oracle.DataAccess" invariant="Oracle.DataAccess" description="Oracle.DataAccess" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess" /> </DbProviderFactories> </system.data> <raisingstudio.data> <CommandConverter.Settings> <add name="System.Data.OracleClient" providerName="System.Data.OracleClient" usePositionalParameters="false" parameterPrefix=":" useParameterPrefixInParameter="false" useParameterPrefixInSql="true" /> <add name="Oracle.DataAccess" providerName="Oracle.DataAccess" usePositionalParameters="false" parameterPrefix=":" useParameterPrefixInParameter="false" useParameterPrefixInSql="true" /> </CommandConverter.Settings> <CommandBuilder.Settings> <add name="MySql.Data.MySqlClient" providerName="MySql.Data.MySqlClient" pagingMethod="LIMIT" identityMethod="LAST_INSERT_ID" useBrackets="false" /> <add name="System.Data.SQLite" providerName="System.Data.SQLite" pagingMethod="LIMIT" identityMethod="LAST_INSERT_ROWID"/> <add name="System.Data.OracleClient" providerName="System.Data.OracleClient" pagingMethod="ROWNUM" identityMethod="CURRVAL" /> <add name="Oracle.DataAccess" providerName="Oracle.DataAccess" pagingMethod="ROWNUM" identityMethod="CURRVAL" useBrackets="false" /> </CommandBuilder.Settings> </raisingstudio.data> <connectionStrings> <add name="RaisingStudio.Data.TestProject.Properties.Settings.DefaultConnectionString" connectionString="Data Source=localhost;Initial Catalog=test;Integrated Security=True" providerName="System.Data.SqlClient" /> <add name="RaisingStudio.Data.TestProject.Properties.Settings.MySqlConnectionString" connectionString="server=localhost;User Id=root;password=root;Persist Security Info=True;database=test" providerName="MySql.Data.MySqlClient" /> <add name="RaisingStudio.Data.TestProject.Properties.Settings.SqliteConnectionString" connectionString="Data Source=test.db" providerName="System.Data.SQLite" /> <add name="RaisingStudio.Data.TestProject.Properties.Settings.OracleConnectionString" connectionString="Data Source= (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = zhongzf-PC)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) );User Id=demo;Password=demo;" providerName="Oracle.DataAccess" /> </connectionStrings> </configuration>
下载地址:http://dac.codeplex.com/
相关阅读:
/article/5037141.html (实体生成工具使用RazorEngine,模版可轻松实制)
相关文章推荐
- ECharts 大版本 4.0 正式发布:带来 8 项全新“黑科技”特性
- ECharts 大版本 4.0 正式发布:带来 8 项全新“黑科技”特性
- ECharts 全新大版本 4.0 正式发布!
- 企业微信、移动oa、移动社交crm全新解决方案隆重发布
- ECharts 大版本 4.0 正式发布:带来 8 项全新“黑科技”特性
- 全新 App Store 发布!全新设计、每日推荐、游戏独立
- ECharts 全新大版本 4.0 正式发布 即将支持微信小程序中使用ECharts
- 上周末把Css中文手册 + 2天驾驭div+css(全新发布2.0.1版本).pdf看完了.强烈推荐2天驾驭div+css(全新发布2.0.1版本).pdf
- NVIDIA社招 发布日期2014年 内部推荐名额
- Nagios 4.0正式版发布,企业级监控系统
- 【推荐】ASP.NET 4.0中的控件ID
- Moon.ORM- 4.4 隆重发布,在性能和使用便捷上一挑群雄(mysoft,cyq,pdf)
- vim:隆重推荐括号补全插件--auto-pairs
- 微软发布全新多核心操作系统原型:Barrelfish
- 山雨欲来风满楼, 却待山花烂漫时 - 写在.NET 4.0和Visual Studio 2010发布前夜
- 将收件人头像发布到全局地址列表(GAL) 推荐
- WordPress 4.0 “Benny” 正式发布
- IBM发布全新软件Lotus Connections 3.0
- 隆重推荐博客 hexun.com/warmage