所以我想我在我的数据层中尝试一些有点聪明/愚蠢的东西。我使用的是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>
{
}
使用与客户端架构中的Clients表相关的所有存储过程。
但是,在我最终点击paydirt之前,这并没有通过InnerExceptions工作,我得到了以下错误 -
InnerException = {&#34;存储过程&#39;选择&#39;不存在。&#34;}
即使Clients.Select肯定存在。
这向我表明基接口(没有[Sql]注释)的默认值为[Sql(Schema =&#34; dbo&#34;)],它是继承的,并覆盖任何后来的注释。
这是对的吗?有没有办法禁用基本架构,如果它是正确的?如果不是,那是怎么回事?
答案 0 :(得分:0)
有点迟到了,但是......
不。 Insight不会继承[Sql]注释。
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Interface)]
我想这只是其中一个不会以我们希望的方式运作的好小动作。