zoukankan      html  css  js  c++  java
  • 一起谈.NET技术,NHibernate3剖析:Mapping篇之ConfORM实战(5):Component语义 狼人:

      Component语义

      使用ConfORM“映射”组件,我们无需特别设置,ConfORM内部会根据Domain定义来判定组件,一般而言,没有主键的类就是组件。

    [Test]
    public void ComponentMappingDemo()
    {
    //show how work with components and how ConfORM understands OOP
    var orm = new ObjectRelationalMapper();
    var mapper = new Mapper(orm);
    //use the definition of table-to-class strategy class by class
    orm.TablePerClass<Person>();
    // Show the mapping to the console
    var mapping = mapper.CompileMappingFor(new[] { typeof(Person) });
    Console.Write(mapping.AsString());
    }

      一些Domain范例

      我们使用各种集合定义Domain:

      1.Mapping a class with components

      Person实体有两个组件:

    public class Person
    {
    public int Id { get; set; }
    public Name Name { get; set; }
    public Address Address { get; set; }
    }

    public class Name
    {
    public string First { get; set; }
    public string Last { get; set; }
    }
    public class Address
    {
    public string Street { get; set; }
    public int CivicNumber { get; set; }
    }

      Mapping

      输出HbmMapping的映射字符串结果:

    ClassWithComponents  2.Mapping a class with double usage of same component

      在上面Domain的基础上新增一个Name类型的属性:

    public class Person
    {
    public int Id { get; set; }
    public Name Name { get; set; }
    public Name ShowBusinessAlias { get; set; }
    public Address Address { get; set; }
    }

      Mapping

      输出HbmMapping的映射字符串结果:

    ClassWithDoubleSameComponents  3.Collection of components

      使用一个集合,而不是单一组件:

    public class Person
    {
    private Iesi.Collections.Generic.ISet<Address> addresses;
    public Person()
    {
    addresses = new Iesi.Collections.Generic.HashedSet<Address>();
    }
    public int Id { get; set; }
    public Name Name { get; set; }
    public ICollection<Address> Addresses { get { return addresses; } }
    }

      Mapping

      输出HbmMapping的映射字符串结果:

    CollectionOfComponents  4.Bidirectional relation

      实现实体与组件的双向关联关系:

    public class Person
    {
    public int Id { get; set; }
    public Name Name { get; set; }
    public Name ShowBusinessAlias { get; set; }
    public Address Address { get; set; }
    }
    public class Name
    {
    public Person Person { get; set; }
    public string First { get; set; }
    public string Last { get; set; }
    }

      Mapping

      输出HbmMapping的映射字符串结果:

    BidirectionalRelation  结语

      这篇文章展示ConfORM的Components语义应用,映射了一些Domain示例。接下来继续介绍ConfORM。Are you ConfORM?

      参考资料

      Fabio Maulo:ConfORM:“Mapping” Components

  • 相关阅读:
    xmind等工具下载
    remix使用经验积累
    visual studio code下载地址
    以太坊存储类型(memory,storage)及变量存储详解
    remix共享本地文件夹教程
    在remix恢复已部署的合约步骤
    ERC721 相关语法和知识点学习
    用truffle写测试用例
    truffle环境搭建和应用
    jenkins pipeline基础语法与示例
  • 原文地址:https://www.cnblogs.com/waw/p/2162793.html
Copyright © 2011-2022 走看看