我有一个正在做的项目。我决定将实体框架与 DBContext 生成器一起使用(以具有不感知对象的持久性),但我现在遇到了一些问题。
这是我设置解决方案的方式:
解决方案:
- MyProject(我的 Web 应用程序项目)
- BusinessObjects(项目)包含 myproject.tt 文件,其中包含所有对象(实体)。每一个都在单独的 .cs 文件中。
- DataAccess(项目)包含 myproject.edmx、myproject.Context.tt 文件
这是我的问题:(我对这一切都很陌生)
假设我有对象(实体)作业,我想在这个对象上定义选择、插入、更新和删除方法。我在哪里做呢?我尝试在 BusinessObjects 项目中创建文件夹 Custom(我将在其中放置所有自定义项)。然后,我想在那里定义我的方法,但我不知道如何创建 ctx(上下文)对象的新实例。
这是我的代码:
namespace BusinessObjects
{
public partial class Job
{
public Job GetJob(Guid Id) {
using (var ctx = new BestGigEntities())
}
return null; //for now
}
}
}
我得到的错误消息是命名空间中不存在 BestGigEntities。BestGigEntities 应该存在于 BusinessObjects 中,但不知何故,当我尝试从 BusinessObject 项目中访问它时它不可见。但我可以从我的主要网络项目中看到它。在 myproject.Context.tt 中,我将 BusinessObjects 指定为自定义工具命名空间。为什么我看不到?
我检查了我的 myproject.Context.cs 文件,我可以看到
public partial class BestGigEntities : DbContext
{
public BestGigEntities()
: base("name=BestGigEntities")
{
. ...
一切似乎都很好。我几乎可以肯定我正确添加了所有引用。我在想也许我想在错误的地方定义这些方法?
BestGigEntities 在我的网络项目中是可见的,我可以从那里使用它。
任何帮助表示赞赏。