这就是我所拥有的:
我想要的是什么:
以下是我未能成功实施的方法;
将以下代码放在通用实体存储库
中if (typeof(T).IsAssignableFrom(typeof(IUniquelyIdentifiable)))
return DbSet.Any(e => ((IUniquelyIdentifiable)e).UId == UId);
throw new InvalidOperationException("Can't check if Uid is taken, the resource is not uniquely identifiable");
但是,当我运行此代码时;
“指定的模式无效。错误:\ r \ n.CLR类型到EDM类型的映射不明确,因为多个CLR类型与EDM类型”ApprovedApplication“匹配。以前找到CLR类型'ToroMessagingService.Entity.ApprovedApplication',新找到CLR类型'ToroMessagingService.Common.DTOModels.ApprovedApplication'。“
更新 我发现我可以通过重命名我的BLL类来修复此错误。但是,现在我得到LINQ只能进行原始强制转换的异常 - 因此它无法转换为接口。现在我对如何实施除暴力之外的其他方面感到茫然。
我在EF很新(就像在第一个项目中一样),所以我很乐意提供任何帮助。
以下是我要避免的事情:
if (typeof (T).IsAssignableFrom(typeof (Entity.Account)))
return Context.Set<Entity.Account>().Any(e => e.UId == UId);
if (typeof (T).IsAssignableFrom(typeof (Entity.User)))
return Context.Set<Entity.User>().Any(e => e.UId == UId);