gpt4 book ai didi

c# - nHibernate 的通用存储库

转载 作者:行者123 更新时间:2023-11-30 20:54:57 25 4
gpt4 key购买 nike

我目前有这个类来弥补我的通用存储库

public abstract class RepositoryBase<T> where T : class
{
private readonly ISession session;

public RepositoryBase(ISession session)
{
this.session = session;
this.session.FlushMode = FlushMode.Auto;
}

public void Start()
{
this.session.BeginTransaction();
}

public bool Add(T entity)
{
this.session.Save(entity);
return true;
}

public bool AddAll(IEnumerable<T> items)
{
foreach (T item in items)
{
this.session.Save(item);
}
return true;
}

public bool Update(T entity)
{
this.session.Flush();
this.session.Update(entity);
return true;
}

public bool Delete(T entity)
{
this.session.Delete(entity);
return true;
}

public bool DeleteAll(IEnumerable<T> entities)
{
foreach (T entity in entities)
{
this.Delete(entity);
}
return true;
}

public T GetById(int id)
{
return this.session.Get<T>(id);
}

public T GetById(string id)
{
return this.session.Get<T>(id);
}

public T GetById(long id)
{
return this.session.Get<T>(id);
}

public T GetById(Guid id)
{
return this.session.Get<T>(id);
}

public IQueryable<T> GetAll()
{
return this.session.Query<T>();
}

public T Get(Expression<System.Func<T, bool>> expression)
{
return GetMany(expression).SingleOrDefault();
}

public IQueryable<T> GetMany(Expression<System.Func<T, bool>> expression)
{
return GetAll().Where(expression).AsQueryable();
}
}

当我调用采用字符串参数的 GetById 方法时,我遇到了一个异常错误,指出 GetById 期望类型为 Guid 而不是字符串。如何设计此方法以接受字符串参数?

最佳答案

您可以设计您的类,为 id 类型添加另一个通用参数:

public abstract class Repository<T, TId>
{
public T Get(TId id)
{
}
}

看看这个https://github.com/sharparchitecture/sharp-architecture/wiki

关于c# - nHibernate 的通用存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18677778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com