2011-12-12 66 views
0

我有一個項目,我正在努力。我決定使用實體框架與DBContext生成器(有堅持不知道的對象),我現在堅持一些問題。如何在Entity Framework中創建對Context對象的引用以及如何使用DBContext對象?

這是我如何設置我的解決方案:

解決方案:
- MyProject的(我的web應用程序的項目)
- 的BusinessObjects(項目)中包含內部的所有對象(實體)myproject.tt文件。每個單獨的.cs文件。
- 數據訪問(項目)包含myproject.edmx,myproject.Context.tt文件

這裏是我的問題:(我是新來的這一切)

比方說,我有對象(實體)工作和我想定義這個對象上的select,insert,update和delete方法。 我該怎麼做?我試圖在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項目訪問它時,它不可見。但是我可以從我的主要Web項目中看到它。 在myproject.Context.tt中,我將BusinessObjects指定爲自定義工具命名空間。爲什麼我看不到它?

我檢查了我的myproject.Context.cs文件,我可以看到

public partial class BestGigEntities : DbContext 
    { 
     public BestGigEntities() 
      : base("name=BestGigEntities") 
     { 
. ... 

一切似乎是確定。我幾乎可以肯定我正確地添加了所有參考。我在想也許我正試圖在錯誤的地方定義這些方法?

BestGigEntities從我的web項目中可見,我可以從那裏使用它。

任何幫助表示讚賞。

+0

BestGigEntities應該是在BusinessObjects命名空間,看到它很顯然不是,啥子名字空間是哪個? –

+0

是的。它位於BusinessObjects名稱空間中。 .Context.cs文件位於DataAccess項目中,正如我所說的,DataAccess項目中的 – bobetko

+0

tt文件具有指定爲自定義工具命名空間的BusinessObjects。 – bobetko

回答

2

我不推薦你擴展你的模型的部分類。如果你熟悉MVVM pattern並使用它,那會更好。
Here被描述爲一些類,如服務和助手。可能他們可能會提示你從哪裏開始使項目更加結構化。
至於在最簡單的情況CRUD opeations它會像

public static Job Get(int jobId) 
{ 
    using (var context = new BestGigEntities()) 
    { 
     return context.Jobs.FirstOrDefault(s => s.Id == jobId); 
    } 
} 

public static void Save(Job job) 
{ 
    using (var context = new BestGigEntities()) 
    { 
     context.Jobs.Attach(job); 
     context.Entry(job).State = EntityState.Modified; 
     context.SaveChanges(); 
    } 
} 

public static void Create(Job job) 
{ 
    using (var context = new BestGigEntities()) 
    { 
     context.Jobs.Add(job); 
     context.SaveChanges(); 
    } 
} 

public static void Delete(Job job) 
{ 
    using (var context = new BestGigEntities()) 
    { 
     context.Entry(job).State = EntityState.Deleted; 
     context.SaveChanges(); 
    } 
} 
+0

我感謝您的評論。我現在不想進入MVC。簡單看看你給我的鏈接,看起來(在我看來)這個主題需要一些重要的時間投入。我只是試圖從.net Web應用程序項目中分離數據和業務對象層。網上有很多例子,像這樣:http://blogs.msdn.com/b/adonet/archive/2010/01/25/walkthrough-poco-template-for-the-entity-framework.aspx – bobetko

+0

I只需要知道我應該在哪裏放置我的CRUD方法,對於我現有的體系結構? – bobetko

+0

我認爲如果你在一個新的服務類中加入所有的CRUD方法將會很方便。您可以使用[存儲庫模式](http://www.codeproject.com/KB/aspnet/diwithmvc3.aspx)或創建大量服務類(每個實體一個)。 – Shymep

相關問題