ORM组件 ELinq (二) 映射配置之Table
2012-12-15 14:50
253 查看
ELinq的默认行为是使用一系列约定将POCO类映射到表。然而,有时候,不能也不想遵循这些约定,那就需要重写它们。重写约定有三种方式:标签方式、FluentAPI和Xml方式。本篇文章中使用标签和Fluent API 两种方式,Xml方式后续介绍。
Table [b]配置[/b]
1) Name 属性 用来描述Table Name
默认约定: 表名和实体类名完全一致
重写方式一:使用DbConfiguration SetClassNameToTalbeName(Func<string, string> fnClassNameToTableName),表名和类名不一样,但是大部分都遵循一定的规律,比如表名都是复数,类名都是单数,那么可以自定义这种类名到表名的映射规则,少数不一致的可以通过重写方式二进行
例子:
重写方式二:标签方式
重写方式三:使用Fluent Api来设置类名到表名间的映射,例如 把OrderDetail 实体类名映射到表名为:Order Details
2)Readonly 属性用来描述表是否是只读的
默认约定:false, 表示可以增删改查
重写方式一:标签方式
重写方式二:Fluent API
3) Schema 属性,数据库schema名称,可选的
默认约定:null
重写方式一:标签方式
重写方式二:Fluent API
完整的基于Lambda表达式的Fluent API配置代码如下:
完整的基于ClassMap的Fluent API配置代码如下:
总结:表名映射原则: 默认情况下表名和实体类名完全一致,如果不一致但是大部分都遵循一定的规律,比如表名都是复数,类名都是单数等,那么可以通过通过SetClassNameToTalbeName策略方法来进行,针对个别不一致情况可以通过TableAttribute标签来制定,或者通过自定义ClassMap来进行,也可以通过XML方式进行统一配置
技术支持:
[b][b]官方网站 [/b][/b]
[b][b]Nuge 下载页面[/b][/b]
[b][b]ORM组件 ELinq系列[/b][/b]
[b][b]ORM组件 ELinq 更新日志[/b][/b]
ORM组件 ELinq 使用答疑
在我的博客留言,我会尽可能地抽时间来答复大家的问题。
加入 ELinq用户的 QQ群(271342583)。
谢谢大家的阅读,麻烦大伙点一下推荐,再次谢谢大家。 ^_^
Table [b]配置[/b]
1) Name 属性 用来描述Table Name
默认约定: 表名和实体类名完全一致
重写方式一:使用DbConfiguration SetClassNameToTalbeName(Func<string, string> fnClassNameToTableName),表名和类名不一样,但是大部分都遵循一定的规律,比如表名都是复数,类名都是单数,那么可以自定义这种类名到表名的映射规则,少数不一致的可以通过重写方式二进行
例子:
DbConfiguration .Configure(connectionStringName) .SetSqlLogger(() => new SqlLog(Console.Out)) .SetClassNameToTalbeName(DbConfiguration.Plural);//把类名转化为复数形式的表名
重写方式二:标签方式
[Table(Name = "Order Details")] public class OrderDetail {}
重写方式三:使用Fluent Api来设置类名到表名间的映射,例如 把OrderDetail 实体类名映射到表名为:Order Details
DbConfiguration .Configure(connectionStringName) .SetSqlLogger(() => new SqlLog(Console.Out)) .AddClass<OrderDetail>(p => { p.TableName("Order Details"); });//注册映射类
2)Readonly 属性用来描述表是否是只读的
默认约定:false, 表示可以增删改查
重写方式一:标签方式
[Table(Name = "Order Details",Readonly=true)] public class OrderDetail
重写方式二:Fluent API
p.TableName("Order Details").Readonly();
3) Schema 属性,数据库schema名称,可选的
默认约定:null
重写方式一:标签方式
[Table(Name = "Order Details",Readonly=true, Schema="dbo")] public class OrderDetail
重写方式二:Fluent API
p.TableName("Order Details").Readonly().Schema("dbo");
完整的基于Lambda表达式的Fluent API配置代码如下:
static DbConfiguration dbConfiguration3 = DbConfiguration .Configure(connectionStringName) .AddClass<OrderDetail>(p => { p.TableName("Order Details").Readonly().Schema("dbo"); });
完整的基于ClassMap的Fluent API配置代码如下:
class OrderDetailMap : ClassMap<OrderDetail> { public OrderDetailMap() { TableName("Order Details") .Readonly() .Schema("dbo"); } } static DbConfiguration dbConfiguration2 = DbConfiguration .Configure(connectionStringName) .AddClass(new OrderDetailMap());
总结:表名映射原则: 默认情况下表名和实体类名完全一致,如果不一致但是大部分都遵循一定的规律,比如表名都是复数,类名都是单数等,那么可以通过通过SetClassNameToTalbeName策略方法来进行,针对个别不一致情况可以通过TableAttribute标签来制定,或者通过自定义ClassMap来进行,也可以通过XML方式进行统一配置
技术支持:
[b][b]官方网站 [/b][/b]
[b][b]Nuge 下载页面[/b][/b]
[b][b]ORM组件 ELinq系列[/b][/b]
[b][b]ORM组件 ELinq 更新日志[/b][/b]
ORM组件 ELinq 使用答疑
在我的博客留言,我会尽可能地抽时间来答复大家的问题。
加入 ELinq用户的 QQ群(271342583)。
谢谢大家的阅读,麻烦大伙点一下推荐,再次谢谢大家。 ^_^
相关文章推荐
- ORM组件 ELinq (三)-映射配置之Attribute
- ORM组件 ELinq (五)-映射配置之XML
- ORM组件 ELinq (四)-映射配置之FluentAPI
- 转:C#制作ORM映射学习笔记二 配置类及Sql语句生成类
- C#制作ORM映射学习笔记二 配置类及Sql语句生成类
- 国内开源ORM组件 ELinq正式版发布
- 解决Mybatis配置ORM映射使用javaType=Date.class时候时分秒都为0
- 百度UEditor 上传组件 使用虚拟路径映射配置
- hibernate中组件映射配置详细解析
- 年度开源力作-ORM组件 ELinq诞生了
- 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。 (异常来自 HRESULT:0x8000401A)。 在 BatchImportEntryTable.GetExcelData(String FileName)
- ORM组件 ELinq (一)首航之旅
- 组件映射配置
- 自己动手写ORM框架(三):关系映射配置—Table属性
- 在spring的配置文件里配置数据源、ORM映射、声明事件管理
- 第32天(就业班) hibernate框架概述、ORM概念、hibernate第一个实例、api讲解、查询方式、主配置文件、映射配置、主键映射
- ORM组件 ELinq 更新日志
- 开源组件:(4)用元数据和BeanUtils写一个简单的ORM映射BaseDAO.java
- Myeclipse自动生成Hibernate配置文件及实体类映射ORM
- 8、Hibernate框架(ORM详解、主文件配置、映射文件配置)