2010-08-17 75 views
0

我已经创建了一个业务层,其中包含要在ASP.NET应用程序中使用的数据库模型。我之前在Windows窗体中使用过Linq To SQL Classes,但在每个请求Web应用程序中使用ORM对我来说是陌生的。我有几件事我无法弄清楚,我会很感激,如果有人给我任何见解..ASP.NET应用程序的实体框架注意事项

我的BLL有像GetRecord()或UpdateRecord()静态方法。这些方法中的每一个创建一个新的ObjectContext实例,在工作单元之后被销毁。我没有任何HttpContext.Current.Items缓存实现。

我正在使用EF .NET 3.5。

  1. 我创建了一个预生成视图(Model.View.cs)并将其添加到我的解决方案中。这是我必须要做的吗?我也需要用我的dll发布csdl,msl和ssdl文件吗?

  2. 预编译查询对ASP.NET应用程序不好吗?对于任何ASPX页面,我只有一个或两个查询,在同一页面中很少使用两次select查询。预编译我的查询会减慢应用程序吗?我想知道会话A所做的预编译对会话B是否有用?

  3. 我创建了下面的方法来更新ASP.NET页面的记录,我不知道,如果它是一个很好的办法做到这一点:使用BLL

    ASP.NET获取记录(实体)。 GetRecord()
    更新
    如果记录存在
    用途context.ApplyPropertyChanges()来更新记录

  4. 我”将更新记录BLL.Update()
    BLL.Update()检查的任何值已经红了几个实体框架K性能图表和每个图表中有两种不同的查询统计数据:第一次运行和第二次运行。由于我使用单位工作类型的设计,我的查询将不会看到第二次运行吗?

谢谢。

回答

1
  1. 您需要将CSDL等作为文件或资源。观看前一代有助于演出,但并不能使您以某种形式包含EDMX。
  2. 编号
  3. 好吧,只要它走了。很难说没有看到代码更多。
  4. 这取决于。 This post should help
+0

非常感谢Craig。如果您愿意,我想清除一些内容:1.我的项目中有一个edmx,其构建操作为EntityDeploy。发布时,我还需要在我的dll旁边安装csdl等吗? 2.所以预编译查询对ASP.NET应用程序并不坏我说的对吗?预编译在不同的并发用户的会话之间不起作用?没有全局缓存或类似的东西? – dstr 2010-08-17 15:06:18

+1

1.您需要(a)将这些文件部署到您的程序集中,或者(b)将其构建操作更改为嵌入式资源并[将EF连接字符串更改为匹配](http://blogs.teamb.com/craigstuntz/ 2010/08/13/38628 /)2.预编译对当前用户有帮助并有所帮助。范围由您决定 - 您在存储对已编译查询的引用时选择范围。 – 2010-08-17 16:47:52

相关问题