切换到OR / M.保存对象时写入文件

时间:2009-07-23 08:43:32

标签: .net nhibernate linq-to-sql

我有这个项目,我想从常规的ADO.NET代码转向更高效,更易理解,更精简和更精简的OR / M系统。我有以下方案当前有效,但也必须使用OR / M:

订单:

  • ID
  • 东西

文件:

  • ID
  • ORDER_ID
  • 路径

当我创建新订单时,我附上了一份文件。本文档提供了一系列二进制数据(PDF文件),当我保存它时,它将二进制内容写入定义的路径。这一切都有效,甚至是交易。

现在,是否可以使用OR / M复制相同的行为?很明显,我必须在生成的OR / M代码之上手动编写,但它在Linq-to-SQL或nHibernate中是否可行?你会推荐哪一个?我怎么能把它连接起来呢?

我的应用程序中还有一些其他不太缺省的行为,我认为这有点难以复制。

牌:

  • ID
  • 串行
  • PUK

调制解调器:

  • ID
  • 串行
  • IMEI

订单:

  • ID
  • 东西

OrderLines:

  • ID
  • ORDER_ID
  • 东西

OrderLineContents:

  • ID
  • orderline_id
  • identifier_name
  • identifier_id

我在这里要做的是将特定卡或特定调制解调器连接到OrderLine。例如,通过在identifier_name和id 1中插入'Modem'。这个系统目前适用于ADO.NET,但我又想知道它在OR / M中是否可以轻松复制。我已经读过L2S只支持单表继承,我认为这显然是某种多态的多表'事物'。

对此的任何帮助将非常感激:)我寻求一个可以同时执行这两种情况的系统,或者如果没有其他选择,可能会将第二种情况更改为稍微不同的东西。

1 个答案:

答案 0 :(得分:0)

我肯定会推荐NHibernate。你提到的所有东西都是可能的。 第一种情况非常简单:

实例化实体并在其上设置数据。将文件保存到磁盘。保留数据库中的实体。

包装整个我尝试捕获的东西,以解决需要回滚事务或删除损坏的文件的异常。

对于“identifier_name”部分,您可以使用单表和连接表类型的继承映射。但是你的类应该共享一个共同的基类来实现。另一种方法 - 与您当前的方法相匹配,但我不确定我会在您的情况下推荐 - 使用NHibernate支持的“任何”映射。

/导演Asger