• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.netmvc3.0在EFCode-First中自定义Model跟数据库中的表名、字段名的对应关系 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
一般情况下,我们的Model跟数据库中的表名、字段名都是一一对应的,如果我们需要结构有所不同呢?EF Code-First中提供自定义数据库结构的功能给我们了。我们可以通过重写DbSet中的OnModelCreating方法,去添加我们的Mapping信息。

1)数据库表明的映射
首先我们先来看看数据表明的映射。这里我需要将Departments映射到表名为tb_Departments的表上:

代码 复制 运行

protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder) { modelBuilder.Entity<Department>().MapSingleType().ToTable("tb_Departments"); }



2)字段的映射
我想在数据库中的每个字段中都会加上前缀“col_”,比如DepartmentID就是“col_DepartmentID”:

代码 复制 运行

protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder) { modelBuilder.Entity<Department>().MapSingleType(depart => new { col_DepartmentID = depart.DepartmentID, col_DepartmentName = depart.DepartName, col_Remark = depart.Remark }) .ToTable("tb_Departments"); }



3)复杂类型的映射
在这里我们添加一个CreateInfo的Model:

代码 复制 运行

public class CreateInfo { public string CreateUserID { get; set; } public DateTime? CreateDate { get; set; } }
我们Department信息中包含了一个CreateInfo类型的属性:

代码 复制 运行

public class Department { public int DepartmentID { get; set; } public string DepartName { get; set; } public string Remark { get; set; } public CreateInfo CreateInfo { get; set; } public virtual ICollection<Employee> Employees { get; set; } }
我们重写编写我们的Mapping信息:

代码 复制 运行

protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder) { modelBuilder.Entity<Department>().MapSingleType(depart => new { col_DepartmentID = depart.DepartmentID, col_DepartmentName = depart.DepartName, col_Remark = depart.Remark, col_CreateUserID= depart.CreateInfo.CreateUserID, col_CreateDate = depart.CreateInfo.CreateDate }) .ToTable("tb_Departments"); }
然后运行下我们发现会出现错误:System.NotSupportedException
原因是我们没有注册CreateInfo为complex 类型。所以我们首先需要注册CreateInfo为复合类型,在OnModelCreating中加上注册的代码:

代码 复制 运行

modelBuilder.ComplexType<CreateInfo>();

OK.

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【收藏下】ashx+jQuery,一个轻量级的asp.netajax解决方案发布时间:2022-07-10
下一篇:
Asp.net—递归方式的FindControl发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap