我有一个不同实体的属性名,比如car、person等,这取决于我想要得到的名称,但是我想用一个方法完成它,这个方法接受entityname并根据它给出输出。
像这样的:
public string GetEntityByName(int id,string entityName)
{
using (var context = new MyContext())
{
return context[entityName].Find(id).Name;
}
}
最佳答案
所有实体都应该扩展基类或实现定义Name
属性的接口。
public interface INamed {
string Name { get; set; }
}
public class Car : INamed {
public int Id { get; set; }
public string Name { get; set; }
}
我不知道
DbContext
是否支持索引属性,但如果支持,您可以尝试执行以下操作:INamed namedEntity = context[entityName].Find(id) as INamed;
if(namedEntity != null)
return namedEntity.Name;
else
return string.Empty;
如果您确定您的所有实体都
INamed
,那么您可以在一行中实现它:return ((INamed)context[entityName].Find(id)).Name;
请注意,如果检索到的实体没有实现
INamed