我有一个不同实体的属性名,比如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

10-04 16:38