0

MVC 4 アプリケーションで EF6 を使用しているため、ビジネス オブジェクトの抽象クラスを作成しました。
したがって、次のような一般的な抽象クラスがあります。

public abstract class Repository<TEntity, TIdentifier> : IRepository<TEntity, TIdentifier> where TEntity : class { ... }

私たちのアプリケーションBusinessLayerには、上記のクラスを実装するいくつかのクラス (エンティティごとに 1 つのクラス) があります。
例: 次のように

    //Authorization is an entity here
    public class AuthorizationBusinessObject : MD.EntityFramework.Repository.Repository<Authorization, int>
    {
       ...
    }

BaseBusinessObject上記のクラスには for が必要です。
さて、私の質問はここにあります。BaseBusinessObject上記のクラスのクラスを作成するにはどうすればよいですか?

編集 :

の基底Repository<>クラスBusinessObjectsですね。
実際には、BusinessObjects
なぜ非ジェネリックな基本クラスが必要なのですか?
MVC 4 アプリケーションで Web API サービスを使用しています。各 Web API コントローラーでは、以下と同じアクションが必要ですが、BusinessObject異なるだけです。したがって、基本ビジネス オブジェクトがあれば、基本 Web API コントローラーに次のアクションを実装できます。

// Setting is an Entity
private readonly SettingBusinessObject _settingBusinessObject;

public SettingController()
{
    _settingBusinessObject = new SettingBusinessObject(Entities);
}

public Setting Get(int id)
{
    return _settingBusinessObject.SelectBy(id);
}
public List<Setting> Get(IEnumerable<int> ids)
{
    return _settingBusinessObject.SelectAll(ids).ToList();
}

public Setting Put(Setting setting)
{
    return _settingBusinessObject.Update(setting);
}
public List<Setting> Put(List<Setting> entities)
{
    List<Setting> userList = new List<Setting>();
    userList.AddRange(entities.Select(_settingBusinessObject.Update));
    return userList;
}

public Setting Post(Setting entity)
{
    return _settingBusinessObject.Insert(entity);
}
public List<Setting> Post(List<Setting> entities)
{
    List<Setting> userList = new List<Setting>();
    userList.AddRange(entities.Select(_settingBusinessObject.Insert));
    return userList;
}

public void Delete(int id)
{
    _settingBusinessObject.Delete(id);
}
public void Delete(List<int> ids)
{
    _settingBusinessObject.Delete(ids);
}
4

1 に答える 1

6

BaseBusinessObject クラスもジェネリックにできないのはなぜですか?

public abstract class BaseBusinessObject<TEntity, TIdentifier> : Repository<TEntity, TIdentifier>
{
    ... base stuff here
}

public class AuthorizationBusinessObject : BaseBusinessObject<Authorization, int>
{
}

ただし、EF の上に多数のエンティティごとのものを重ねると、多くのボイラープレートが追加され、実際のメリットはほとんどないことに注意してください。EF を直接使用するだけで必要なものが得られるかどうか、またはビジネス オブジェクト クラスを個々のエンティティではなく操作の論理セットに基づいて編成する必要があるかどうかを検討するのは難しいかもしれません。

于 2013-11-29T19:43:07.367 に答える