2015-04-14 5 views
1

На моем рабочем месте мы совместно используем проект, который использует Entity Framework 6.0 для операций с базой данных.Entity Framework 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; 

Мы оба используют EF 6.0 через NuGet.

Когда я проверяю свойства 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 для его генерации каждый раз, когда вы выбираете Update model from database в своем .edmx файле.

+1

Но файл T4 генерируется _ из базы данных на основе версии EF, которую я использую, не так ли? – Nestor

+1

.cs генерируется из файла .tt, .tt использует только параметры, которые вы изменяете в файле .edmx. Попробуйте скопировать и вставить ваш код в этот файл .tt в правильном месте и попытаться обновить модель из базы данных, а затем проверить, была ли она создана на Model.Context.cs. – Tito

+1

Зависит также от версии используемой Visual Studio, пожалуйста, проверьте эту ссылку https://msdn.microsoft.com/en-us/data/jj613116.aspx на DbContext Generator. – Tito

Смежные вопросы