所以我想我会在我的数据层中尝试一些聪明/愚蠢的东西。我正在使用 Jon Wagner 的 Insight.Database,但我的大多数表都有一组 CRUD 操作。所以我想,为什么不这样做:
public interface IDataInterface<T>
{
Task<T> SelectAsync(int id);
Task<IEnumerable<T>> SelectAsync();
Task<int> UpsertAsync(T obj);
Task<bool> UpsertManyAsync(IEnumerable<T> list);
Task<bool> DeleteAsync(int id);
Task<bool> DeleteManyAsync(IEnumerable<T> list);
}
然后我想我可以做这样的事情:
[Sql(Schema = "Clients")]
public interface IClientDataInterface : IDataInterface<Client>
{
}
与我的所有与客户模式中的客户表相关的存储过程。
但是,在我最终点击 paydirt 之前,这不起作用并通过 InnerExceptions 戳,我收到以下错误 -
InnerException = {"存储过程 'Select' 不存在。"}
即使 Clients.Select 肯定存在。
这向我表明,基本接口(没有 [Sql] 注释)具有 [Sql(Schema="dbo")] 的默认值,它被继承并覆盖任何以后的注释。
这是正确的吗?如果它是正确的,有没有办法禁用基本模式?如果不是,那是怎么回事?