gpt4 book ai didi

c# - .Net 2.0 的简单存储库

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:59 24 4
gpt4 key购买 nike

我正在尝试将存储库模式用于在 .Net 2.0 中创建的站点。所有客户端代码都需要绑定(bind)数据表,我无法更改它,所以请多多包涵。

我有一个(可能是愚蠢的)问题。我不知道如何将强类型实体传递到我的具体存储库。该接口(interface)迫使我传递一个 Employee 类型,但我需要传递一个 Developer 类型(它派生自 Employee),因为它具有在基类中找不到的特定属性。

    public interface IEmployeesRepository
{
DataTable Employees { get; }
void SaveEmployee(Employee employee);
void DeleteEmployee(Employee employee);
}

public class DevelopersRepository : IEmployeesRepository
{
public void SaveEmployee(Developer employee)
{
Database db = new SqlDatabase(connectionString);
DbCommand dbCommand = db.GetStoredProcCommand("Developers_Insert", employee.ProgrammingLanguage);
db.ExecuteNonQuery(dbCommand);
}
}
}

我试过使用泛型,但我仍然没有强类型对象,对吗?

最佳答案

我可能是错的,但听起来您想使用通用约束:

public interface IEmployeeRepository<T>
where T : Employee
{
DataTable Employees { get; }
void SaveEmployee(T employee);
void DeleteEmployee(T employee);
}

public class DevelopersRepository : IEmployeeRepository<Developer>
{
public void SaveEmployee(Developer employee)
{
Database db = new SqlDatabase(connectionString);
DbCommand dbCommand = db.GetStoredProcCommand("Developers_Insert", employee.ProgrammingLanguage);
db.ExecuteNonQuery(dbCommand);
}
}

关于c# - .Net 2.0 的简单存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5424996/

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