我可以在客户端应用程序中使用ORM(EF或nHibernate)而不会影响性能

时间:2012-02-28 19:35:48

标签: c# entity-framework nhibernate c#-4.0 orm

我正在开发WPF客户端应用程序。我从来没有见过任何人在客户端使用ORM。

我在这里对客户端与服务器应用程序中使用ORM进行了一些分析。

  1. 默认情况下是Lazy。这意味着,直到查询执行第一次没有任何反应,但在缓存该查询之后。现在这可以在服务器应用程序中理解,但客户端经常启动,所以我可以在客户端应用程序中使用预先加载吗?

  2. 如果dll被篡改,黑客是否可以轻松找到数据,因为他可以立即看到所有数据库结构?

  3. 在客户端使用ORM时有任何其他影响吗?

  4. 谢谢, OMKAR

2 个答案:

答案 0 :(得分:2)

1)EF和nhibernate都可以设置为eager 2)nto篡改dll,但两者都有pipline类型的设计,所以代码可以插入pipline - 例如EF / Nhibernate分析器这样做 3)客户端不应该如此不同 - 我们使用EF,服务器/客户端并没有发现差异

答案 1 :(得分:1)

我们正在将它用于我们的富客户端应用程序,并且没有太多问题。你必须改变你的想法 - 但我们真的很喜欢模型类(而不是使用手工制作的sql)。

  • 我真的会想到你对于急切加载的看法。我会尝试使用延迟加载来开发应用程序,如果您遇到问题,请尝试更改为急切加载。制作“查看数据对象”并将数据库实体映射到此可能有助于解决延迟加载问题(Ayende Rahien在这些事情上写了很多 - 你可以查看他的博客:http://ayende.com/blog - 一个好的入门者可能是他的MSDN文章{ {3}})
  • 篡改了DLL - 我对这一点没有任何意见
  • 其他含义 - 您必须考虑会话管理,因为它不像服务器端应用程序那么容易 - 这对我们来说是最大的改变。但另一方面,您可以获得“已经存在与此连接关联的数据读取器”问题。

整个会话管理在一开始就势不可挡,所以我认为你应该从良好的结构开始 - 就像Ayende的文章中所示。我不喜欢这种方法,你可以试试像Dapper这样的“瘦”ORM:http://msdn.microsoft.com/en-us/magazine/ee819139.aspx