nee*_*hah 5 c# entity-framework
我有一个不同实体的属性名称,如汽车、人等。根据Id我想要的名称。但我想用一个方法来完成它,该方法接受实体名称并根据该名称给出输出。像这样的东西:
public string GetEntityByName(int id,string entityName)
{
using (var context = new MyContext())
{
return context[entityName].Find(id).Name;
}
}
Run Code Online (Sandbox Code Playgroud)
您的所有实体都应该扩展基类或实现定义属性的接口Name。
public interface INamed {
string Name { get; set; }
}
public class Car : INamed {
public int Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我不知道是否DbContext支持索引属性,但如果支持,您可以设法执行以下操作:
INamed namedEntity = context[entityName].Find(id) as INamed;
if(namedEntity != null)
return namedEntity.Name;
else
return string.Empty;
Run Code Online (Sandbox Code Playgroud)
如果您确定所有实体都是INamed,那么您可以用一行来实现这一切:
return ((INamed)context[entityName].Find(id)).Name;
Run Code Online (Sandbox Code Playgroud)
请注意,如果检索到的实体未实现,后一种方法将引发或抛出异常INamed