我有许多类似的 EF5 实体作为参考数据。例如:
咨询类型实体
public class ConsultationType
{
public ConsultationType()
{
this.Appeals = new HashSet<Appeal>();
}
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<Appeal> Appeals { get; set; }
}
法分实体
public class LawBranch
{
public LawBranch()
{
this.Appeals = new HashSet<Appeal>();
}
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<Appeal> Appeals { get; set; }
}
DB 上下文中的 DbSet
public DbSet<LawBranch> LawBranches { get; set; }
public DbSet<ConsultationType> ConsultationTypes { get; set; }
如您所见,这些实体具有相似的属性Id
和Title
.
实际问题
我需要一个从数据库中获取数据并将其放入列表的函数。然后该函数插入预定义对象作为该列表的第一个元素。
我的预定义对象:
private class PredefinedReferenceItem
{
public int Id { get; set; }
public string Title { get; set; }
public PredefinedReferenceItem()
{
this.Id = -1;
this.Title = "some text";
}
}
我的错误解决方案:
首先,我创建IReference
了描述参考实体的接口
public interface IReference
{
int Id { get; set; }
string Title { get; set; }
}
其次,我的引用实体实现了这个接口
public class ConsultationType : IReference { ... }
public class LawBranch: IReference { ... }
第三,我创建了函数
public IList<IReference> GetReferenceWithPredefinedItem<T>(DbSet<IReference> dbset)
{
var data = from a in dbset
orderby a.Title
select a;
var list = data.ToList();
list.Insert(0, new PredefinedReferenceItem());
return list;
}
但是该功能在我的视图模型中不起作用:
return GetReferenceWithPredefinedItem(dbContext.ConsultationTypes);
VS2012 中的错误信息:
The type arguments for method 'Mjc.Client.ViewModels.ViewModelBase.GetReferenceWithPredefinedItem<T>(System.Data.Entity.DbSet<Mjc.Foundation.IReference>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
请帮我找出错误或指定正确的方向。