我是C#和DB的新手, 我有一个方法,通过DB中的代码查找员工。我想使检查通用,以便它可以用于检查各种表中的员工代码(用户将提供代码和表)。我怎样才能做到这一点?
这是我的代码:
public static bool checkForEmployeeCode(string SSN)
{
MyEntities ETC = new MyEntities();
var checkSsn = (from Applicant in ETC.Applicants1
where Applicant.SSN == SSN.Trim()
select Applicant).FirstOrDefault();
if (checkSsn != null)
{....
我有答案请解释。
答案 0 :(得分:1)
您可以在Where()
之上使用扩展方法重新使用IQueryable<YouEntityType>
过滤器。
要允许在不同类型的实体上调用此扩展方法,每个实体都必须实现一个公共接口,公开SSN
属性:
public interface IHasSSN
{
string SSN { get; set; }
}
public class Applicant : IHasSSN
{
public string SSN { get; set; }
// Other properties
}
public class OtherTable : IHasSSN
{
public string SSN { get; set; }
// Other properties
}
public static Queryable<T> WithSSN<T>(this IQueryable<T> queryable, string ssn) where T : IHasSSN
{
return queryable.Where(e => e.SSN == ssn.Trim());
}
然后可以在实现WithSSN()
接口的实体的任何DbSet
或IQueryable
实体上调用IHasSSN
方法。您的代码现在看起来像:
public static bool checkForEmployeeCode(string SSN)
{
MyEntities ETC = new MyEntities();
var checkSsn = ETC.Applicants1
.WithSSN(ssn)
.FirstOrDefault();
if (checkSsn != null)
{....
}