2016-03-26 5 views
-1

Я создал контекст EF из базы данных. Теперь я хочу, чтобы все объекты наследовались от базового объекта, чтобы я мог ссылаться на все сущности, используя этот базовый объект.Как добавить базовый класс/интерфейс к EF6 автогенерированной модели

Public Partial Class Lookup : BaseEntity 
{ 
} 

Всякий раз, когда я пытаюсь использовать, DbSet.Add (юридическое лицо)

public class GenericRepository<T> : IRepository<T> where T:IRepositoryEntity 
{ 
    #region Private member variables... 
    internal March2016Entities Context; 
    internal DbSet<T> DbSet; 
    #endregion 

    #region Public Constructor... 
    /// <summary> 
    /// Public Constructor,initializes privately declared local variables. 
    /// </summary> 
    /// <param name="context"></param> 
    public GenericRepository(March2016Entities context) 
    { 
     this.Context = context; 
     this.DbSet = context.Set<T>(); 
    } 
    /// <summary> 
    /// generic Insert method for the entities 
    /// </summary> 
    /// <param name="entity"></param> 
    public void Insert(T entity) 
    { 

     DbSet.Add(entity); 
    } 
} 

Это говорит BaseEntity не является частью модели EF. Я попытался изменить класс Context.TT, но кажется, что он будет только helf в генерации классов сущностей, наследующих от базового класса.

Как я могу добавить этот базовый класс в модель сущности, чтобы операции могли работать? Пожалуйста, предложите.

+0

Без проблем делать то, что вы пытаетесь сделать. Возможно, вы создаете/добавляете BaseEntity в DbSet (и не можете). Попробуйте сделать его абстрактным и скомпилировать проект, чтобы вы увидели, где вы это делаете. – bubi

+0

Я добавил точную строку кода, которая бросает исключение. Когда я делаю DBSet.Add (объект Lookup), он выдает ошибку. – rohit

+0

Можете ли вы также показать нам декларацию DBSet? – Domysee

ответ

0

Я смог сузить проблему. DBSet имеет тип BaseEntity, и я пытался вставить объект, используя DBSet of BaseEntity. EF правильно выбрал это исключение. Это было вызвано тем, что репозиторий возвращался с типом BaseEntry. Как только я получил репозиторий типа Type, проблема была решена.

0

Вы также можете добавить код для IRepositoryEntity, я думал, что должен быть BaseEntity? а также сделать абстрактную абстрактность baseEntity.

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