zoukankan      html  css  js  c++  java
  • LINQ To SQL中使用继承(附源码)

    作者:方明

    有的时候我们在设计数据库的时候发现如果完全把商务逻辑中的类影射到表中可能会照成数据库中很多表都很相似,甚至结构上都是一样的,下面举一个例子来说明如何处理这种情况。假设我们正在创建一个图书销售网站,但客户却希望这个图书销售网站可能需要销售其他产品,在业务逻辑层我们可能设计如下:

    表结构设计如下:

    那么如何映射对象和表呢,请看如下代码:

    Product

    book类:

    book类:

    OtherProduct类

    OtherProduct类

    数据上下文

    数据上下文

    这里最好将数据上下文以及product类从dbml文件中分离出来,因为这里边有一部分需要我们自己定义。这里边主要需要我们自定义的部分就是product类,需要在类前添加如下特性:
    [InheritanceMapping(Code = "1", Type = typeof(Product), IsDefault = true)]
    [InheritanceMapping(Code = "2", Type = typeof(Book))]
    [InheritanceMapping(Code = "3", Type = typeof(OtherProduct))]
    还有就是用于区分的属性TypeID前也要修改特性如下:
    [Column(IsDiscriminator = true, Storage = "_TypeID", DbType = "VarChar(50)")]
    应用:
    如果我们需要添加一本书到数据库中我们可以使用如下代码

    添加一本书

    在这里我们可以查看sql语句为:


    如果我们需要添加一个其他产品到数据库我们可以使用如下代码:

    添加其他商品

    在这里我们可以查看sql语句为:

    如果我们需要检索所有图书代码如下:

    检索所有书

    源码下载

  • 相关阅读:
    强化训练1
    强化训练2
    变量的本质
    抽象层
    安装vs2015
    解决思路
    分析栈的缺点
    (转)使用yuicompressor-maven-plugin压缩js及css文件(二)
    (转)yuicompressor 与 maven结合,打包,压缩js,css (一)
    (转)Properties Editor为你解除通过native2ascii进行Unicode转码的烦恼
  • 原文地址:https://www.cnblogs.com/nuaalfm/p/1288338.html
Copyright © 2011-2022 走看看