这个问题比较有力量,哈哈!
例如:有两个表userbases和products
两个表的主键分别为UserID和ProductID,那么,我想问有没有一种方法把它们的主键统一起来,用一个字段名称表示呢?
事实上,这个问题可以从一个基础知识说起!
接口,没错就是接口,我们知道接口中的一切,在它的实现类中都必须被实现,想一下,如果在接口中定义一个object类型或者string类型的字段,让所以子类都为它赋值,那不就OK了吗?
哈哈,说干就干
/// <summary>
/// 实体模块统一接口
/// </summary>
public interface IEntity
{
/// <summary>
/// 为了主键统一,而手动设置的
/// </summary>
string ID { get; }
}
那如果有一个userbase实体类,它会继承这个统一接口,它的代码就变成了:
public class Race : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
#region IEntity Members
public string ID
{
get { return Id.ToString(); }
}
#endregion
}
这样,基础有了,看了例子:
class bobo<TEntity> where TEntity : class,IEntity
{
public void hello(TEntity entity)
{
Console.WriteLine("\n\r共同的主键值是:"+entity.ID);
}
}在方法里调用:
bobo<Race> b = new bobo<Race>();
b.hello(new Race { Id = 1, Name = "zzl" });
怎么样,有点意思呀!
本文转自博客园张占岭(仓储大叔)的博客,原文链接:如何让所有实体类用相同名称的主键(很有力的问题,比如所有表实体主键都用ID),如需转载请自行联系原博主。