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语句为:

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

    检索所有书

    源码下载

  • 相关阅读:
    Django中的syncdb命令
    notepad++下的字体设置
    python中的getattr函数
    python实现虚拟茶话会
    利用python爬取海量疾病名称百度搜索词条目数的爬虫实现
    SQL里面如何取得前N条数据?
    python中怎么查看当前工作目录和更改工作目录
    python中thread模块中join函数
    python中的自测语句是什么?
    python读取数据库数据有乱码怎么解决?
  • 原文地址:https://www.cnblogs.com/nuaalfm/p/1288338.html
Copyright © 2011-2022 走看看