EF CTP5 POCO, базовый класс и как реализовать наследование - PullRequest
1 голос
/ 03 февраля 2011

Эй, допустим, я хочу, чтобы на всех моих записях была стандартная печать.

inserted_by, inserted_at, updated_by, updated_at, deleted_by, deleted_at, timestamp

1 - Если бы мне пришлось поместить это в базовый (может быть абстрактный) класс POCO, что было былучшая стратегия наследования для реализации этого.(Я использую GUID в качестве первичных ключей.)

Я не хочу использовать базовый класс для чего-либо еще.В моем Db Context;Я хотел бы использовать конечные классы POCO, которые соответствуют таблице БД.DbSet, похоже, я должен использовать DbSet жестко, а затем использовать OfType для запроса :)

2 - Если наследование не в контексте, что бы вы порекомендовали, ComplexType, интерфейс может быть?

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Я делаю именно это в EF4. Существует базовый класс репозитория:

public class GenericRepository<T> : IGenericRepository<T> where T : BaseEntity

Все репозитории сущностей наследуются от этого класса. Общие методы .Add () и .Update () автоматически устанавливают данные аудита:

public void Add(T entity)
{
        entity.CreatedOn = DateTime.UtcNow;
        entity.CreatedBy = UserName;
        entity.LastModifiedOn = entity.CreatedOn;
        entity.LastModifiedBy = entity.CreatedBy;
        ObjectContext.AddObject(GetEntitySetName<T>(), entity);
}

public void Update(T entity)
{
        T originalEntity = ObjectSet.Single(t => t.Id == entity.Id);            
        entity.CreatedOn = originalEntity.CreatedOn;
        entity.CreatedBy = originalEntity.CreatedBy;
        entity.LastModifiedOn = DateTime.UtcNow;
        entity.LastModifiedBy = UserName;
        ObjectSet.ApplyCurrentValues(entity);
}

Итак, вы можете видеть, что он не входит в базовый класс POCO BaseEntity, потому что это не входит в обязанности POCO Вместо этого он принадлежит хранилищу.

0 голосов
/ 03 февраля 2011

Вам необходимо наследование TPC (таблица для класса или таблица для конкретного типа). Проверьте эту статью о сопоставлении CTP5 TPC.

...