• 现有的ORM框架思路分析。


    1. 单独对象简单属性操作

    2. One 2 Many 操作

    3. Many 2 Many 操作

    4. Query的自定义查询操作。 

    http://www.cnblogs.com/Jerry-Chou/archive/2009/11/02/light-weight-orm-for-net-publishing.html

    实在是非常简单。。。单个表对象的orm映射操作。每天有参考价值

    http://www.cnblogs.com/huobazi/archive/2008/01/31/dbentry.html

    1. 继承了DbObjectModel<Book>, 抽象类

    貌似可以直接被http访问操作。 

        User u = new User();
        u.Name 
    = "tom";
        DbEntry.Save(u);

    1对多的查询操作: 

    代码
    [DbTable("People")]
    public abstract class Person : DbObjectModel<Person>
    {
        [Length(
    50)]
        
    public abstract string Name { getset; }

        [HasOne(OrderBy 
    = "Id DESC")]
        
    public abstract PersonalComputer PC { getset; }

        
    public Person() { }
        
    public Person(string Name) { this.Name = Name; }
    }
    代码
    [DbTable("Books")]
    public abstract class Book : DbObjectModel<Book>
    {
        [Length(
    50)]
        
    public abstract string Name { getset; }

        [BelongsTo, DbColumn(
    "Category_Id")]
        
    public abstract Category Category { getset; }

        
    public Book() { }
        
    public Book(string Name) { this.Name = Name; }
    }

    使用自定义的HasMany表示多对多 

    代码
            Category c = Category.FindById(3);
            Console.WriteLine(
    ">>Before:");
            ShowHasMany(c);
            Console.WriteLine(
    ">>After:");
            c.Name 
    = "Sport";
            c.Books[
    0].Name = "Kungfu";
            c.Books[
    1].Name = "Dodge the bullets";
            c.Save();
            Article a = Article.New("fly away");
            a.Readers.Add(Reader.New(
    "Kingkong"));
            a.Readers.Add(Reader.New(
    "Spiderman"));
            a.Save();

    http://ibatis.apache.org/

    http://www.docin.com/p-37858241.html

    ibatis需要自己写sql对orm进行映射,简单的说,就是一垃圾。

    http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#tutorial-firstapp-firstclass

    Hibernate

    建立一个Event的类, 

    代码
            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
            session.beginTransaction();

            Event theEvent 
    = new Event();
            theEvent.setTitle(title);
            theEvent.setDate(theDate);
            session.save(theEvent);

            session.getTransaction().commit();

    一对多操作

    代码
            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
            session.beginTransaction();

            Person aPerson 
    = (Person) session.load(Person.class, personId);
            Event anEvent 
    = (Event) session.load(Event.class, eventId);
            aPerson.getEvents().add(anEvent);

            session.getTransaction().commit();

    http://www.cnblogs.com/jiangyuxuan/archive/2007/08/11/852187.html

        [Serializable]
        [ORMapping(TableName
    ="t_system_user")] // 映射的实际数据表名称
        public class UserEntity : BaseEntity  // 必须继承实体基类

    小结一下

    看现在的orm很累,都没什么意思。来来去去那些。不是xml就是元数据。现在我的问题就是关系中的操作。

    如果对对象的简单属性操作,没有任何问题。

    x.aaa = xxx;

    Session.save(x);

    如果是简单操作+1对多操作,那么这两个对象,如何保证先后?如何实现save?

    1对多,person --> car,本质上,就是person有个car的主键。因此,在操作上,用户要先save(car).再save(person)

    如果是多对多操作?

    本质上,就是增加了连接表,是个独立与这个2个对象的表。例如

    person ---> cars ---> car

    首先,这个连接关系,一定有方向,例如person->car。然后才是多对多关系。那么这个连接表就属于person管理了。过程就是:

    car = new car();

    person = new person();

    person.addcar(car);

    session.save(car);

    session.save(person); 

  • 相关阅读:
    Silverligh OOB一直更新
    Silverlight使用通过服务绑定数据的控件
    vue prop不写value的处理逻辑
    .NET Core Http请求(GET、POST、上传文件并携带参数)
    流媒体服务器与web客户端插件的配置与搭建(Darwin Streaming server + Quictime plugin)
    目录
    margin标记可以带一个、二个、三个、四个参数,各有不同的含义。
    Asp.Net中几种相似数据绑定标记符号的解释及用法
    火狐自动换行 有空格
    xml
  • 原文地址:https://www.cnblogs.com/zc22/p/1819463.html
Copyright © 2020-2023  润新知