2015-04-14 51 views
1

在我的工作場所,我們共享使用Entity Framework 6.0進行數據庫操作的項目。實體框架6生成錯誤的上下文代碼

在存儲庫中,我看到MyModel.Context.cs文件中的修改(添加了一個函數)。

從這使用塊:

using System; 
using System.Data.Entity; 
using System.Data.Entity.Infrastructure; 
using System.Data.Objects; 
using System.Data.Objects.DataClasses; 
using System.Linq; 

它改成這樣:

using System; 
using System.Data.Entity; 
using System.Data.Entity.Infrastructure; 
using System.Data.Entity.Core.Objects; 
using System.Data.Objects.DataClasses; 
using System.Linq; 

[EdmFunction("MyEntities", "DbFunction1")] 
public virtual IQueryable<DbFunction1_Result> DbFunction1(Nullable<System.Guid> id) 
{ 
    //some code  
    return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<DbFunction1_Result>("[MyEntities].[DbFunction1](@id)", parameter); 
} 

我更新了我的工作副本並將其編譯。

但是,每當我用Update model from database,我的代碼更改回本:

using System; 
using System.Data.Entity; 
using System.Data.Entity.Infrastructure; 
using System.Data.Objects; 
using System.Data.Objects.DataClasses; 
using System.Linq; 

我們都通過的NuGet使用EF 6.0。

當我檢查的EntityFramework DLL的屬性,我得到這個:

enter image description here

這是什麼原因?

+1

[更新您的EDMX(或.tt)文件](https://msdn.microsoft.com/en-us/data/upgradeef6.aspx)。 – CodeCaster

回答

2

因爲您需要編輯.tt文件。 可能MyModel.Context.tt是爲您生成MyModel.Context.cs的模板文件,它使用T4在您每次在.edmx文件中選擇Update model from database時生成它。

+1

但是T4文件是基於我使用的EF版本從數據庫生成的,不是嗎? – Nestor

+1

.cs是從.tt文件生成的.tt只使用您在.edmx文件中更改的參數。嘗試將代碼複製並粘貼到此.tt文件的正確位置,並嘗試從數據庫更新模型,稍後檢查它是否在Model.Context.cs中生成。 – Tito

+1

也取決於您使用的Visual Studio版本,請在DbContext Generator上檢查此鏈接https://msdn.microsoft.com/en-us/data/jj613116.aspx。 – Tito