我可以用什么SQL ORM来替换这个旧代码

0 c# sql orm

很抱歉,因为这个问题特定于我的问题.

在学习反思的同时,我在一周内完成了一个迷你SQL ORM,然后在使用它一周时进行了一些小调整.由于它只有很少的工作量,它实际上只与sqlite兼容.到目前为止我没有遇到代码问题,但我想把它移植到支持TSQL或MySql的东西.

示例代码在这里已经过时但在我的类中具有最常用的功能.什么库我可以用最小的痛苦来移植代码.请注意,它必须支持外键.

Lac*_*che 10

我的建议是查看一些ORM的教程,然后选择最适合你的方法.

NHibernate 参考文档建议30分钟来启动和运行介绍章节中的示例.

我自己的ORM短名单将是:

  • NHibernate的
  • Linq 2 SQL

一些相关问题:

NHibernate示例

// create and save an entity
var u = new User{ Name="foo", SignupDate=DateTime.Now };
session.Save( u );

// fetch and update entity, saving a related entity
var post = session.Get<Post>( 42 );
post.Tags["foo"].Count++;
session.Save( post );

// save a related item for an entity
post.Tags.Add( new Tag("Name")); 
session.Save( post );
Run Code Online (Sandbox Code Playgroud)

一些示例映射和类:

public class User
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual DateTime SignupDate { get; set; }
}

public class Post
{
    public virtual int Id { get; set; }
    public virtual User User { get; set; }
    public virtual string Title { get; set; }
    public virtual string Body { get; set; }
    public virtual IList<Tag> Tags { get; set; }
}

public class Tag
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual string Count { get; set; }
}

<class name="User" table="user">
  <id name="Id">
    <generator class="native" />
  </id>
  <property name="Name" />
  <property name="SignupDate" />
</class>

<class name="Post" table="post">
  <id name="Id">
    <generator class="native" />
  </id>
  <property name="Title" />
  <property name="Body" type="StringCLob" /> <!-- ntext -->
  <many-to-one name="User" />
  <bag name="Tags" table="post_tag" cascade="save-update">
      <key column="postid" />
      <many-to-many class="Tag" column="tagid" />
  </bag>
</class>

<class name="Tag" table="tag">
  <id name="Id">
    <generator class="native" />
  </id>
  <property name="Name" />
  <property name="Count" />
</class>
Run Code Online (Sandbox Code Playgroud)