我有一个不同实体的属性名称,如汽车、人等。根据 Id
我想获取名称。但我想用一个方法完成它entityName 并根据它给出输出。
像这样:
public string GetEntityByName(int id,string entityName)
{
using (var context = new MyContext())
{
return context[entityName].Find(id).Name;
}
}
最佳答案
您所有的实体都应该扩展一个基类或实现一个定义 Name
的接口(interface)属性(property)。
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
,后一种方法将引发或抛出异常
关于c# - 使用 Entity Framework 动态选择表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30030064/