您的位置:首页 > 其它

ORM组件 ELinq (三)-映射配置之Attribute

2013-01-01 16:15 302 查看
  ELinq 发布后,由于公司的项目比较忙,就没有时间进行撰写博文进行介绍,望大家见谅,现在元旦了该抽时间把ELinq的系列补充补充,该篇介绍Attribute的映射配置。

Attribute的映射配置方式和LinqToSQL的配置方式类似,不用太多的笔墨进行介绍每个Attribute的含义,直接用代码说话。 (以Northwind数据库的Customers表和Orders 表为例,客户和订单是一对多关系为例)

[Table(Name = "Customers")]
public class Customer
{
[Id(Name="CustomerId")]//主键映射
public string Id;

[Column]public string ContactName;
[Column]public string CompanyName;
[Column]public string City;
[Column]public string Country;

[Ignore]public string Phone;//忽略,不映射该字段
}

[Table(Name = "Orders")]
public class Order
{
[Id(IsDbGenerated = true)]//该主键是自动增一
public int OrderID;

[Column]public string CustomerID;//外键字段
[Column]public DateTime OrderDate;
}

public class Northwind : DbContext
{
//连接字符串名称:基于Config文件中连接字符串的配置
const string connectionStringName = "Northwind";

//构造dbConfiguration 对象
static DbConfiguration dbConfiguration = DbConfiguration
.Configure(connectionStringName)
.SetSqlLogger(() => new SqlLog(Console.Out))
.AddClass<Customer>()
.AddClass<Order>()
;
public Northwind() : base(dbConfiguration) { }

public readonly IDbSet<Customer> Customers;
public readonly IDbSet<Order> Orders;
}


  这样就非常简单的完成了OR映射,看到这里可能有人会问一对多怎么映射,比如Customer实体类里面有多个Order实体?其实也一样简单,看代码

[Table(Name = "Customers")]
public class Customer
{
[Id(Name="CustomerId")]//主键映射
public string Id;

[Column]public string ContactName;
[Column]public string CompanyName;
[Column]public string City;
[Column]public string Country;

[Ignore]public string Phone;//忽略,不映射该字段

//一对多映射,ThisKey:Customer.Id,OtherKey:Order.CustomerID
     [Association(ThisKey="Id", OtherKey="CustomerID")]
public IList<Order> Orders; }


  既然一对多可以,那么多对一是不是也可以,当然,看代码

[Table(Name = "Orders")]
public class Order
{
[Id(IsDbGenerated = true)]//该主键是自动增一
public int OrderID;

[Column]public string CustomerID;
[Column]public DateTime OrderDate;

//一对多映射,ThisKey:Order.CustomerID,OtherKey:Customer.Id
[Association(ThisKey = "CustomerID", OtherKey = "Id")]
public Customer Customer;
}


通过上面的例子想必大家对ELinq基于Attribute的配置方式有了一个了解:

TableAttribute:映射表名

IdAttribute:映射主键的, IsDbGenerated=true 属性标致主键是自动增一的

IgnoreAttribute:忽略映射的

ColumnAttribute: 映射列的

AssociationAttribute:映射关系的,一对多,多对一,一对一都用这一个标签

下一节将介绍 基于Fluent API的映射方式。

  技术支持:

[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)。

谢谢大家的阅读,麻烦大伙点一下推荐,再次谢谢大家。 ^_^
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: