【问题标题】:How to use EF4 as a DAL如何将 EF4 用作 DAL
【发布时间】:2011-04-14 21:31:37
【问题描述】:

我目前在我的 ASP.NET 网站上使用 EF 4 来访问 MySql 数据库。这工作正常。但是我现在想要另一个网站项目来访问相同的实体。我该如何设置?

我不能只引用原始网站,因为它是一个网站,而不是一个 Web 应用程序。所以想必,我需要把Entity Data Model放到自己的项目中,编译成DLL。但是……

  • 哪种项目类型?
  • 我是否只是剪切和粘贴 DataModel.edmx 和 DataModel.Designer.cs,编译并在两个网站中添加参考?命名空间呢?
  • 我应该把连接字符串放在哪里?目前它在我项目的 Web.config 中。

我真的不知道从哪里开始 - 我只是按照教程让 EF 工作到现在!如果有人有时间,我将非常感谢分步说明。谢谢。

【问题讨论】:

    标签: visual-studio visual-studio-2010 entity-framework entity-framework-4


    【解决方案1】:

    该模型应放置在一个新的类库项目中。我的偏好是此时基于现有模型重新创建模型。对于命名空间,我喜欢使用 {CompanyName}.DataAccess。从您的网站项目中删除旧模型,添加对新类库项目的引用并构建网站项目。网站项目会在很多地方中断,但将命名空间更改为新的数据访问程序集应该很简单。我更喜欢这种方法来剪切/粘贴,因为现在你有很好的干净命名空间。请注意您可能在其中包含带有实体名称的字符串的任何地方,例如如果您使用的是 Include(如果您使用的是 EF 4 和延迟加载,这应该不是问题)。将两个网站项目的连接字符串保留在 web.config 中。当您在类库中创建模型时,它会在 app.config 中添加一个连接字符串。没关系,它就在那里,因此模型在您刷新它时知道如何连接到数据库。

    【讨论】:

    • @user706547 哇,谢谢 - 这很轻松!现在都在工作。几个问题 - 1. app.config 中的连接字符串在运行时是否被忽略? 2. 你对字符串中的实体是什么意思? - 我刚刚用 Label1.Text = (from t in ctx.Topics.Include("Subject") select t.Subject.Title).First() 做了一个测试页;这很好用。我正在使用 EF4,但不知道什么是延迟加载!
    猜你喜欢
    • 1970-01-01
    • 2012-02-02
    • 2010-12-15
    • 2011-06-16
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    相关资源
    最近更新 更多